2009-05-21 44 views

回答

8

使用jQuery,你可能會想明確地添加了If-Modified-Since的與ifModified選項,該選項默認是假頭:

$.ajax({ 
    ... 
    ifModified: true, 
    ... 
}); 

還有一個cache選項,你需要如果您的dataType爲jsonpscript,則強制爲true。其他dataType默認爲true。

有關這些選項的說明,請參閱jQuery.ajax() docs

1

在http響應中設置適當的標頭,例如Expires標頭和Cache-control指令。

詳情請參閱here,但簡而言之,你要設置標題來表示:

  • 該資源應該被緩存一定時間(expires頭)
  • 資源是可緩存(Cache-control:public header)

或者,您可能希望讓用戶請求該文件,但發回一個「未修改的resposne」,這可以節省重新下載正文(對於大文件)。在這種情況下,你應該使用響應頭,表示

  • 當資源的最後修改(最後修改時間標題),它允許客戶端告訴服務器版本幾歲
  • 的E-標籤該文件是一種散列碼,可以讓服務器知道客戶端的版本。請注意電子標籤是如何生成的......在某些服務器上,etags會打破負載平衡。

這兩種方法將讓客戶端緩存響應,並減少響應被重新下載的次數。另外,我喜歡避免在緩存響應中設置Cookie,因爲某些緩存不會緩存具有Cookie的響應,並且某些緩存會緩存包含Cookie的響應,這兩者都可能不合適。

1

我想所有的AJAX響應都被緩存,除非你指定不緩存。您還可以查看jQuery Cache(?)。

2

GET請求可能被瀏覽器緩存(取決於瀏覽器緩存大小等),但POST不會被緩存。

問候。