熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

DotNetNuke網站性能的10個技巧

2013-11-13 10:31:28  來源: .NET編程 

  以下的這些配置是目前為止我所發現的最佳基准配置依據不同的主機運行環境更新頻率訪問量以及用戶數量網站的優化配置會有些不同經過優化的DNN也是可以運行得很快的
以下我將使用DNN中文版示范這些技巧同樣適用於DNNx

   主機管理 > 主機設置中的基本優化

  首先我們來優化主機設置我僅在這裡指出關鍵的設置

  外觀

  顯示版權信息禁用此項

  ◆高級設置 > 身份驗證設置 (只適用於DNNxDNN設置方法見下) 禁用不需要的身份驗證方式 通常我會禁用LiveID和OpenId以增加用戶登陸的速度

  ◆高級設置 > 性能設置

  ◆網頁狀態保存方式頁面這裡是指viewstate的存儲方式

  ◆模塊緩存方式重量級緩存這裡使用的是頁面輸出緩存

  ◆客戶端緩存Public這樣浏覽器就會緩存jscss圖片這些資源文件

  ◆壓縮設置GZip方式壓縮注意這裡只是Gzip壓縮只是壓縮aspx動態頁面javascript css等資源文件請在IIS中設置壓縮壓縮後頁面大小一般會減少%以上速度提高也節省帶寬

  ◆高級設置 > 其它設置

  ◆任務調度模式: 計時器模式HTTP請求模式對訪問率低的網站會造成初次訪問加載過重的現象啟用事件記錄緩存? 選中此項是否自動同步文件? 禁用此項

   卸載不需要的模塊和Provider

  卸載不需要的模塊可以提高加載網站的速度卸載模塊後模塊對應的程序集(dll)也會從bin文件夾中移除這樣會減少初次讀取網站時加載程序集到內存的數量以提高網站讀取速度DNN安裝向導中默認模式只會安裝基本的模塊和Provider 但如果安裝時選擇了全部模塊及Provider請按以下方式卸載 當需要時再安裝

  DNNx 主機管理 > 模塊定義 中刪除不需要的模塊

  DNNx 主機管理 > 功能擴展 中刪除不需要的擴展例如不需要論壇時就不要安裝網站不提供OpenId驗證方式就卸載掉

   禁用不需要的身份驗證方式

  此設置只適用於DNN 在DNN中如果安裝了多種身份驗證方式例如OpenID LiveID Active Directory在站點管理中可以針對不同的站點關閉開啟需要的驗證方式這點比DNNx要靈活在這裡我們要禁用不需要的身份驗證方式已提升登陸頁面速度站點管理 > 功能擴展中選擇擴展類型Authentication System(身份驗證系統)然後編輯不需要的身份驗證系統並禁用通常我會只開啟Default Authentication(默認的DNN驗證方式)禁用

  DNN_OpenIDAuthentication

  DNN_LiveIDAuthentication

  DotNetNuke Active Directory Authentication Project

   調度管理的設置

  在主機設置 > 調度管理中根據需要延長或關閉不需要的調度任務以防止頻繁執行調度任務增加服務器壓力

  如果網站不提供站內搜索則禁用DotNetNukeServicesSearchSearchEngineScheduler

  如果網站提供站內搜索則把DotNetNukeServicesSearchSearchEngineScheduler任務頻率設置為天重試頻率設為小時這將會極大的減緩服務器壓力

  同樣把DotNetNukeServicesSchedulingPurgeScheduleHistory任務頻率設置為

  以上就是最基本的通過網站配置實現的優化總的來說以上的改變會帶來顯著的性能提升但大多時間仍然不能足夠的保正網站平滑的運行因此依據不同情況我會進行以下的優化

   定期清除事件記錄

  很多用過DotNetNuke的朋友會發現數據庫中[EventLog] 表(記錄站點事件記錄的表)可能會成為導致性能下降的罪魁禍首因為DNN網站中的很多操作都會被記錄到事件記錄(EventLog)中 開啟事件記錄緩存會減緩尺寸過大的[EventLog]表對網站帶來的副作用但是最佳的優化方法莫過於定期清除事件記錄 方法有很多種

  如果只有一個站點用主機管理員(host)帳號登陸在站點管理 > 事件記錄中選擇清除所有記錄如果有很多站點一個一個清除很麻煩直接到 主機管理 > SQL查詢 裡運行 TRUNCATE TABLE eventlog 則可一次清除[eventlog]的所有記錄如果對數據庫有管理權限則可設置數據庫調度任務定期自動執行TRUNCATE TABLE eventlog

  另外也可以使用Scheduled SQL Jobs這個免費模塊來定期清空事件記錄

  請記住我們必須保持事件記錄 (eventlog表)的記錄數在一個很小的范圍內這樣才能保證網站的運行效率很多國外收費很貴的DNN專用主機空間所作的主要優化就是定期清除事件記錄當然在站點管理 > 事件記錄 > 編輯記錄設置 中關閉不需要的記錄例如APPLICATION_START APPLICATION_END也是個不錯的方法

   皮膚優化

  皮膚優化也是很重要的購買或制作皮膚時一定要選用支持XHTML的使用DIV+CSS制作的皮膚這會增加網頁讀取的流暢度css也可以被浏覽器緩存也可以增加頁面讀取速度 另外選擇一個支持CSS的菜單控件例如House Menu皮膚控件來替換默認的皮膚控件可以減少頁面尺寸%甚至更多優化後的皮膚可令頁面讀取速度減少%以上

  另外關於客戶端優化Yahoo的網站優化最佳實踐是個很好的指南我們也可以下載Firefox中的YSlow插件來查看優化的效果

   防止網站重新加載編譯

  很多人對DNN速度慢的印象大多來自於初次訪問速度過慢這其實是因為AspNet網站初次加載到程序池需要進行動態編譯導致感覺速度很慢其實加載之後速度就會很快了 另外對於訪問量不多的網站

  網站在靜止一段時間後會被從程序池中踢出當有用戶訪問時網站會重新加載編譯所以對於訪問量少的網站用戶總是覺得網站很慢 解決這個問題的關鍵是保持網站在程序池中活躍以防網站重新加載這方面的工具不少原理一般就是定時ping網站保持網站活躍

  我比較推薦的是一個免費工具Smarter Ping 之前有個客戶的網站訪問量很小導致每次訪問網站都會重新加載一般要等在使用了Smarter Ping之後每次都是一下就打開了不超過 Smart Ping是一個Windows Service它會定時ping你預設的網站這裡建議時間間隔設為分鐘一次另外DNN也有提供一個專門響應這類工具的網頁在網站根目錄下KeepAliveaspx 添加要ping的網址時則可設為x

   DNN優化模塊

  在這裡不得不提Snapsis PageBlaster這個優化模塊它可以提供全方位的優化例如頁面壓縮 緩存 合並靜態文件減少http請求 大大提升頁面讀取速度如果前面優化效果不理想可以試試這個模塊

   服務器優化建議

  在不同運行環境下的優化配置

  雲平台類似於Mosso這種雲服務平台也是可以支持DNN的但是在這種環境下模塊緩存到內存是不工作的所以在主機設置裡我們要把模塊緩存方式設為硬盤這樣會提升%的性能其它的設置基於以上優化不用變動

  共享主機共享主機中模塊緩存方式設置為內存沒什麼問題因為內存比磁盤要快很多但是對於很繁忙的Web服務器例如存放上百個網站的Web服務器使用共享的應用程序池每個網站分配到的內存可能都會很少這種情況下緩存到內存的命中率會很低大部分時間會從服務器重新請求這時設置模塊緩存方式設為硬盤的效果會好些

  虛擬主機情況和共享主機類似模塊緩存方式默認設置為內存根據具體情況如果網站很多覺得速度慢改為硬盤試試看

  對於在本地測試使用debug模式在Visual Studio中運行的朋友不要期待在這種環境下速度會很快這種模式下運行DNN這種大型網站會很吃力在IIS中設置網站速度會提高不少

   修復反復發生的錯誤

  反復發生的錯誤異常是所有網站的性能殺手 每當有不能處理的異常拋出都會的進程造成一些影響並且DNN系統會捕捉並記錄異常到數據庫的[EventLog]表對於高訪問量的網站這種代價是很難承受的經常查看站點管理 > 事件記錄確定沒有反復發生的錯誤是保證網站正常工作的前提 如果發現此類異常要及早處理 異常可能是由第三方模塊造成也可能是系統本身的bug

  對於不熟悉Net除錯和DotNetNuke系統的朋友可能會比較麻煩這時最好利用社區的幫助或者咨詢專業公司

  總結

  以上就是我優化DotNetNuke網站性能的一些經驗 希望有自己獨門優化秘籍的朋友也來和大家分享分享讓DNN運行速度越來越快!!


From:http://tw.wingwit.com/Article/program/net/201311/13901.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.