2

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

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

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

但是,我只在我的实时站点上使用自定义 Web 部件,所以所有这些脚本什么都不做,只是减慢了我的页面并导致性能测试结果不佳。

在呈现实时站点时,我尝试在母版页上隐藏<ajaxToolkit:ToolkitScriptManager /><cms:CMSPortalManager />控件,但这会导致模板<cms:CMSWebPartZone />中断。

有谁知道如何确保在不需要时消除这种膨胀?或者至少使这些脚本在页面末尾呈现,这样它们就不会过多地干扰性能?

4

2 回答 2

3

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

我不建议您删除母版页中的任何默认代码。这会导致事情破裂(正如你所经历的那样)。

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

我为减少打击所做的工作如下:

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

从 Kentico 文档中阅读这篇文章可以更深入地了解更多信息:优化网站性能

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

我希望这有帮助。

于 2015-09-25T10:08:12.693 回答
2

除了@sbhomra 的出色回答之外,我还有一些问题、建议和意见。

你说的性能是多少秒或毫秒?如果您认为您将获得几毫秒的时间,那么尝试重建所有功能是不值得的。如果您说一两秒钟,您可以在设置和代码中更改大约 15 种不同的东西以将其全部恢复。想想你要编写、维护和升级多少代码只是为了获得一秒或更少的回报?

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

虽然我不严格推荐它,因为你失去了太多的功能并且有太多额外的不必要的代码,但 MVC 会给你你正在寻找的控制。

于 2015-09-25T12:01:44.740 回答