2010-05-15 57 views
2

所以,在我們的網站我們使用的是SiteMap。對於每個請求,我們都會提供一些菜單,並且在輔助函數中做SiteMap.RootNode如何更有效地使用SiteMap?

現在,當我做了使用dotTrace我的網站的分析,我看到了get_RootNode()走的時候很多的(大約70-75毫秒)。但是我們知道SiteMap是靜態的。所以,我想在某種程度上,我將在Application_Start中獲得SiteMap.RootNode一次,並且將通過每個請求訪問它。

所以,我的問題是,

我的方法是否正確? 我該怎麼做? 還是有任何有效的方式,我可以使用SiteMap.RootNode

謝謝。

+0

您是否使用自定義的SiteMap提供程序?默認的提供者被緩存/優化,所以我不得不假設你正在從數據庫中加載什麼東西? – 2010-05-15 12:22:45

+0

我正在使用mvcSiteMap提供程序。而我不從數據庫加載。我只有一個Web.sitemap – Bipul 2010-05-15 13:08:36

回答

0

我完全避免了這個原因的站點地圖。 它們可以達到幾百頁,但超出此性能將開始降級。

我認爲他們是一個簡單的入門型小工具或類似的工具。

我寫了自己的cms,理論上如果您使用類似的cms/app來構造數據的方式相同,您應該能夠在更短的時間內從db獲取菜單列表,當前頁面id /某種形式的基於類似上下文的查詢。

你可以(正如我所知道的),但分解你的站點地圖到較小的局部地圖,然後從那些拉菜單列表,以提高性能。

但是,如果您的網站少於500頁,我會質疑編碼...它是一個自定義站點地圖嗎? 提供程序是否在等待資源鎖定或什麼?

您是否考慮過使用xmldocument類來提取數據? (只是一個想法)