簡體   English   中英

在現場Kentico網站中管理/刪除不必要的腳本

[英]Managing/removing unnecessary scripts in live Kentico site

我們正在使用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 />隱藏<ajaxToolkit:ToolkitScriptManager /><cms:CMSPortalManager />控件,但這會導致具有<cms:CMSWebPartZone />模板<cms:CMSWebPartZone />

有誰知道如何確保在不需要時消除腫脹? 還是至少使這些腳本在頁面末尾呈現,以免對性能造成太大干擾?

不幸的是,使用ASPX和ASPX + Portal Pages在Kentico中構建站點將自動生成其他標記,例如__doPostBackWebResource.axdScriptResource.axd

我不建議您在母版頁中刪除任何默認代碼。 這將導致事情中斷(如您所經歷的)。

但是,適當放置此標記不會導致頁面性能出現嚴重問題。 可以理解,這不是理想的。

我為減輕打擊而采取的措施如下:

  • 盡可能禁用ViewState。 例如,在頁面模板或Webpart / User控件級別。
  • 將ViewState移到頁面底部(在Kentico設置中),從而使頁面不太“沉重”。
  • 確保緩存所有內容。 例如,您的Web部件和模板(圖像/ js等)在IIS級別和Kentico級別使用其API使用的站點家具。

從Kentico文檔中閱讀此文章可更深入地了解一些信息: 優化網站性能

如果您真的想完全控制呈現的HTML,Kentico確實允許您使用MVC創建模板。 但是,這不能讓您靈活地通過在CMS管理中移動Web部件來修改頁面模板。 我想您正是出於這個原因選擇了門戶頁面方法。

我希望這有幫助。

除了@sbhomra的出色答案,我還有一些問題,建議和意見。

您在談論性能多少秒或毫秒? 如果您認為可以節省幾毫秒的時間,那么嘗試重新構建所有功能就不值得您付出努力。 如果說的是一兩秒鍾,則可以在設置和代碼中更改約15種不同的東西,以重新獲得一切。 考慮一下您將要編寫,維護和升級多少代碼,以便獲得第二或更少的回報?

WebResource和SciptResource加載資源,這些資源被編譯到網站內的庫中。 因此,如果有人創建了一個外部庫,並且該庫正在加載已編譯到其中的圖像,那么您將在您的站點上獲得該WebResource.axd引用。 您必須從Kentico實例中物理刪除那些庫。

盡管我不嚴格建議這樣做,因為您會丟失太多功能並且擁有太多不必要的代碼,但是MVC會為您提供所需的控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM