2015-09-25 29 views
2

我们正在使用ASPX +门户模型构建Kentico 8.2站点。在我的网站上查看呈现的HTML,我可以看到很多Kentico转入我的页面的不必要的Javascript。更何况这是发生在我的页面顶部的表单元素的顶部。在Kentico现场管理/删除不必要的脚本

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

一眼就可以看出这些脚本构成了与微软AJAX框架一起使用的UpdatePanel等。我的假设是他们在那里添加门户管理器功能时,在Kentico UI中使用页面。据推测,它们也用于某些内置的网页部件。

但是,我只在自己的活动网站上使用自定义Web部件,因此所有这些脚本都没有任何操作,只是减慢了我的页面并导致性能测试结果不佳。

我试过在渲染活动站点时在主页面上隐藏<ajaxToolkit:ToolkitScriptManager /><cms:CMSPortalManager />控件,但这会导致<cms:CMSWebPartZone />中断的模板被破坏。

有没有人知道如何确保在不需要时删除这个膨胀?或者至少使这些脚本在页面的末尾呈现,以免它们影响性能太多?

回答

3

不幸的是,使用ASPX和ASPX + Portal Pages在Kentico内构建网站将自动生成附加标记,例如__doPostBack,WebResource.axdScriptResource.axd

我不建议删除母版页中的任何默认代码。这会导致事情中断(就像你经历过的那样)。

但是,使用此标记不应导致页面性能出现大问题。可以理解的是,这并不理想。

我做些什么来减轻冲击最大的是以下几点:

  • 禁用ViewState中尽可能。例如,在页面模板或Web部件/用户控制级别。
  • 将ViewState移动到页面底部(在Kentico设置中),因此页面不再“最重”。
  • 确保你正在缓存你所能做的一切。例如,您的Web部件和模板(图片/ js等)在IIS级别和Kentico级别使用其API所使用的网站家具。

看完这篇文章从Kentico文档提供了更深入一些更多的信息:Optimizing website performance

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

我希望这会有所帮助。

+0

谢谢@sbhomra - 我担心这将是答案。我意识到其他Kentico性能指标,但是令人讨厌的是,CMS将所有这些垃圾都放在页面顶部。欣赏这不是一个大规模的交易明智的,但自动化的性能测试倾向于采取这种东西。 – getsetcode

2

除了@ sbhomra的伟大的答案我有几个问题,建议和意见。

你在谈论性能有多少秒或几毫秒?如果你认为你会回到几毫秒,那么尝试重建所有功能是不值得的。如果您正在谈论一两秒钟,您可以在设置和代码中更改大约15个不同的内容,以便全面获取。想想你要写多少代码,维护和升级只是为了获得第二或更少的回报?

WebResource和SciptResource加载编译到网站内库中的资源。因此,如果有人创建了一个外部库,并且该库正在加载已编译到其中的图像,则会在您的网站上获得该WebResource.axd引用。您必须从Kentico实例中物理删除这些库。

虽然我不推荐它严格地说是因为你失去了如此多的功能并且有太多额外的不必要的代码,MVC会给你你想要的控件。

+0

Thanks @ brenden-kehren - 现在我最关心自动化性能测试的结果,它标志着你在内容之前加载脚本。不幸的是,MVC目前不是一种选择。无论如何感谢提示。 – getsetcode

+1

我再问一遍,你在谈论什么样的性能问题?如果你打算在我认为你浪费时间之前花时间去追踪这几个脚本。还有其他的东西可以提高你的性能评分,比如在web部件中指定列,使用缓存(很多Kentico开发自定义代码的开发人员不会使用它们),最小化你的输出等等。追踪这些少数脚本文件。看看KInspector工具https://github.com/Kentico/KInspector,这会给你所有的建议 –

+1

这只是一个耻辱Kentico不给开发人员一种去除未使用的代码的方式。即使DOM负载性能差异可能可以忽略不计(可论证),但它仍然是不必要的膨胀和HTTP请求,并且在检查DOM时挖掘它并不是一件微不足道的事情。 – philtune