由於我們社區的其他成員已經說過緩存是非常重要的工具,當然如果你想減少服務器負載和延遲))我只是想分享一些我必須學習的技術最後2-3周:
第一件事:您可以響應與If-Modified-Since
請求工具返回Last-Modified
HTTP標頭(以及ETag/If-None-Match
,唯一的區別是,Etag的代表一些散列值的Last-Modified時代表日期)。您只需比較If-Modified-Since
和Last-Modified
日期,並且如果頁面,圖像等已過時您將返回200 OK
狀態碼。如果圖像未被修改您只返回304 Not Modified
狀態(圖像從您的瀏覽器緩存中提供)。
在這種情況下,您應該在客戶端(瀏覽器)上緩存圖像。
如果您想減少數據庫查詢的數量,您也可以將它們緩存在服務器上。或者你可以使用兩個:ServerAndClient。
第二件事:過去兩週我用這種方法掙扎)
我設置Expires
響應頭的永恆(如1年)和客戶端上的緩存圖片。如果圖像已經改變,我建立新的Url(包含散列圖像的最後寫入日期)。
我創建了一個監視圖像文件夾的Windows服務,如果圖像已被更改,它會將最後修改日期寫入數據庫。比我添加這個圖像的最後修改日期到Url。
這種方法的好處是服務器只有在圖像被更改時纔會被命中。
E.g.在第一種描述的方法中,瀏覽器必須向服務器發送請求,以在從其自己的緩存中獲取圖像之前驗證圖像是否新鮮。
三件事:如果緩存沒有在它自己的使用Expires
HTTP標頭(沒有實施Last-Modified
或Etag
)的原因,例如,在客戶機上的圖像瀏覽器會從它的高速緩存,除非採取這一形象時間到期。所以,如果圖像已被修改,用戶將不會看到它,除非時間到期。
希望我在緩存小經驗將幫助你:)
附:緩存一切可能!
這是一個家庭工作問題嗎? (討論) – danodonovan 2013-03-01 20:04:34
嗨,不過,論文在課程的閱讀列表中,我們可能會對此提出質疑。但問題是我自己的。 – Puckl 2013-03-01 20:12:29