本文轉至 http://www.cnblogs.com/fishtreeyu/archive/2011/03/01/1968004.html ( ⊙ o ⊙ )!呀... 沒有找到名字...
1,ASPX頁面緩衝 頁面緩衝的使用方法非常的簡單,只需要在aspx頁的頂部加一句聲明<%@ OutputCache Duration="60" VaryByParam="none" %> 這樣整個頁面的內容都會被緩衝,頁面中的ASP.NET代碼、資料來源在緩衝期間都不會被運行,而是直接輸出緩衝的頁面內容。 頁面緩衝是針對所有這個頁面的訪問者。這樣1個訪問者和1萬個訪問者、一次訪問和100萬次訪問對資料庫的壓力是一樣的。
Duration="60" 的意思是指定緩衝的時間為60秒,可根據情況自已設定,超過這個時間則緩衝失效,再次產生以後會緩衝60秒,以此類推。 VaryByParam="none" 的意思是設定無參數緩衝(有參數的緩衝下面會講到) 但是對於一些有參數的頁面,比如新聞內容頁來講(比如是針對於ViewNews.aspx頁面的,不會自動去讀取?id=1),如果如上設定的話,則會緩衝在第一個看到的新聞,因為?id=2、?id=3隻是頁面的不同參數而已,為了能讓不同的新聞各種緩衝,因此可以設定VaryByParam="id",表示對於不同的id參數進行單獨緩衝。如果有多個確定緩衝參數,則將參數名用分號隔開即可,比如VaryByParam="id;number"。 如果想讓任何不同的查詢字串都建立不同的緩衝,則設定VaryByParam="*",一般情況下設定“*”就足夠了。 這兩個參數是必須的,不能預設。另外還有一個重要的參數DiskCacheable="true|false" 意思是要不要把緩衝放到硬碟上,如果設為false則快取資料會放到記憶體中。 這裡需要注意一下,如果頁面資料很小的話可以把快取資料放到記憶體中,如果資料較大最好放到硬碟上,否則會佔用大量記憶體影響伺服器運行,如果資料緩衝到硬碟上的話,記得要把Duration=""的值設的大一些如Duration="3600",如果設的太小,伺服器會過於頻繁的在硬碟上寫資料反而會降低效能,如果在記憶體中快取資料Duration""則不要設的太長,當然具體時間長短要大家自己多嘗試才知道。
2,禁止IE緩衝 假如有一個頁面New.aspx,在用戶端第一次訪問後,它會在Internet臨時檔案夾裡有一個New.aspx,檔案產生.之後,如果修改了 New.aspx的資料後再次訪問該頁面,發現IE並沒有對這個New.aspx的資料進行更新,反而開啟的是第一次訪問的頁面! IE自動(預設)調用了Internet臨時檔案夾裡有一個New.aspx檔案,而不是重新下載新的New.aspx,怎樣能讓IE自動重新下載新的New.aspx呢,就像點了重新整理按鈕重新載入此頁面一樣? 解決的第一種方法: 用戶端的設定方法:Internet選項→常規→Internet臨時檔案中"設定"→每次訪問此頁時檢查。 這種設定時最好同時刪除臨時檔案,這種方法是讓客戶自己設定自己的瀏覽器,如果客戶忘記了設定,那麼,新的頁面總是下載不到本地.這時,客戶會怎樣認為呢?("肯定是程式的錯!") 此外,別人訪問您的頁面,用戶端的瀏覽器由他們來操作,一般,這種方法不宜解決此類問題。 解決的第二種方法: 讓程式自己來讓頁面自動下載!這種方法實際上是讓頁面不儲存到Internet臨時檔案夾中,每次訪問頁面都會讓瀏覽器下載頁面。 只要在New.aspx代碼的Page_Load事件中加上 Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);即可. 在不加這句時開啟頁面,Internet臨時檔案夾裡會有一個分頁檔,而加了,就會沒有了。不過,像aspx檔案中如果有圖片檔案或js檔案,那還是會下載到Internet臨時檔案夾的。
3,JS中的ShowModalDialog()函數開啟ASPX頁面時禁止頁面緩衝 方法一:先寫一個htm頁面,裡面嵌套一個iframe,iframe的src就是aspx頁面,然後ShowModalDialog()的頁面就是這個htm頁面,而不是先前的aspx頁面,這樣就不存在緩衝問題。 方法二:在aspx頁面的Page_load()裡面寫上一句 Response.expires = -1; 意思就是讓頁面立即到期,這樣外面也不用嵌套一個htm頁面.
4,資料來源緩衝 如設定ObjectDataSource的CacheDuration(緩衝時間:秒),EnableCaching=true。這樣每隔CacheDuration指定的時間段才調用SelectMethod指定的方法來執行資料庫查詢,其它時候都是直接返回緩衝的資料 緩衝固定的時間適用於首頁、文章列表頁等訪問頻繁的頁面,對於看帖頁面則不適合,假設有100萬個文章,如果每個文章都是固定緩衝1小時的話,假設一小時之內有10萬個文章被看了的話,那麼就要緩衝十萬個文章,非常佔用記憶體,因為“百年一看”的“墳貼”偶然被訪問一次也緩衝一個小時,佔用記憶體。這時候可以採用“滑動視窗”策略,比如文章緩衝10分鐘,如果10分鐘之內有訪問了,則緩衝的實效時間修改為從被訪問這一刻起的10分鐘之後,以此類推。這樣經常訪問的文章就可以“長期緩衝”,而不經常訪問的文章也不會因為偶然的訪問而長期佔用緩衝。設定方法,資料來源:CacheExpirationPolicy="Sliding"