Ajax的緩存機制和瀏覽器處理資源時的緩存機制是一樣的。
三條簡單規則:
只要是URL相同的GET請求,瀏覽器會使用緩存(當然還要看服務器的Cache-Control/Expires/Last-Modified/ETag頭的設置)。
只要是POST請求,瀏覽器都不會緩存。
Https的請求,瀏覽器不會緩存(絕大數情況如此,但是也有例外,據說FF瀏覽器是例外)。
補充:
在URL中拼入隨機的查詢字符串可以使瀏覽器認為這是一個新的請求,從而不使用緩存。
在Ajax的請求中設置Http頭: If-Modified-Since:0,告訴服務器要新的內容。
補充說明:
一般情況下,用戶手動觸發瀏覽器刷新(windows:F5 MacOS:command+R),瀏覽器會忽略資源的Cache-Control/Expires頭的設置,而去連接服務器。無論是頁面刷新還是Ajax刷新都是如此。但我聽說,IE瀏覽器不遵循這個規則。也不知道是不是所有版本的IE瀏覽器都是這樣。如果有哪位大俠清楚這個,不吝賜教。