如果你不想讓用戶端緩衝(cache)你伺服器上的網頁的話,在ASP.NET中可以這樣控制:
在Page_Load中寫:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
我在測試的時候發現一些有趣的東西:
按HTTP 1.0的標準,你可以在html網頁上直接使用 <meta http-equiv="pragma" content="no-cache" />
按HTTP 1.1的標準,你可以用:<meta http-equiv="Cache-Control" content="no-cache" />
為了保險起見當然是兩個都用上。
但當我嘗試在aspx頁中加入這兩個meta tag的時候,卻看見返回的Response的Http Header裡面居然顯示Cache-Control: Private。
而且ASP.NET也沒有辦法通過程式來給Response寫入pragma這個Http Header。
最後的方案是在aspx頁中加入<meta http-equiv="pragma" content="no-cache" /> ,然後在程式中寫Response.Cache.SetCacheability(HttpCacheability.NoCache);
這樣,返回的Response裡就有我預期的那兩個header了:
Pragma: No-Cache
Cache-Control: No-Cache
覺得怪怪的。如果有哪位知道我哪裡做錯了,請賜教。
=========================================================
這裡還有一些相關的文章:
How to: Set the Cacheability of an ASP.NET Page Declaratively
How to: Set the Cacheability of an ASP.NET Page Programmatically
還有fiddler這個工具不錯,用來調試使用http協議的程式很不錯:http://www.fiddlertool.com/fiddler/
另:最近多接觸Http協議和各類RFC,覺得做標準也真是不容易,事無巨細面面俱到,最後發布了還要被人橫挑鼻子豎挑眼。IT業有句話叫:三流企業做產品,二流企業做技術,一流企業做標準。確實也挺有道理。
有對REST和SOAP的比較感興趣的朋友嗎?我們可以交流交流。