我们正在使用ASPX + portal模型构建Kentico 8.2网站。在我的实时站点上查看呈现的HTML,我可以看到Kentico转储到我的页面中的许多不必要的Javascript。更重要的是,这发生在表单元素顶部的页面顶部。

例如,即使我没有使用任何需要它的控件,它也会呈现ASP.NET __doPostBack JS函数。其他脚本将作为WebResource.axd和ScriptResource.axd包括在内添加。

乍一看,这些脚本似乎构成了与UpdatePanel等一起使用的Microsoft AJAX框架。我的假设是,在Kentico UI中使用页面时,可以在其中添加门户网站管理器功能。大概它们也与某些内置Web部件一起使用。

但是,我仅在活动站点上使用自定义Web部件,因此所有这些脚本都无济于事,只会减慢我的页面速度并导致较差的性能测试结果。

在渲染实时站点时,我尝试在主页上隐藏<ajaxToolkit:ToolkitScriptManager /><cms:CMSPortalManager />控件,但这会导致具有<cms:CMSWebPartZone />的模板损坏。

有谁知道如何确保在不需要时消除肿胀?还是至少使这些脚本在页面末尾呈现,以免对性能造成太大干扰?

最佳答案

不幸的是,使用ASPX和ASPX + Portal Pages在Kentico中构建站点会自动生成其他标记,例如__doPostBackWebResource.axdScriptResource.axd

我不建议您在母版页中删除任何默认代码。这将导致事情中断(如您所经历的)。

但是,适当地放置此标记不会导致页面性能出现严重问题。可以理解,这不是理想的。

我为减轻打击而采取的措施如下:

  • 尽可能禁用ViewState。例如,在页面模板或Webpart / User控件级别。
  • 将ViewState移到页面底部(在Kentico设置中),这样页面就不那么“繁重”。
  • 确保您正在缓存所有可能的内容。例如,您的Web部件和模板(图像/ js等)在IIS级别和Kentico级别使用其API使用的站点家具。

  • 从Kentico文档中阅读此文章可以更深入地了解一些信息:Optimizing website performance

    如果您真的想完全控制呈现的HTML,Kentico确实允许您使用MVC创建模板。但是,这不能让您灵活地通过在CMS管理中移动Web部件来修改页面模板。我想您正是出于这个原因选择了门户页面方法。

    我希望这有帮助。

    关于asp.net - 在现场Kentico网站中管理/删除不必要的脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32779107/

    10-11 06:05