2013-03-21 98 views
2

我想使用mod_expire在用戶的瀏覽器中緩存我的WordPress博客的內容,從而提高我在YSlow和Google Pagespeed的排名。所以我想使用下面的配置。可能mod_expire與Wordpress更新衝突?

Header unset ETag 
FileETag None 

<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresDefault A0 
<FilesMatch ".(ico|jpg|png|gif|css|js|gz)$"> 
ExpiresDefault A2592000 
Header append Cache-Control "private" 
</FilesMatch> 
</IfModule> 

但是,現在出現了以下問題。如果插件代碼中斷並且插件開發者發佈更新會怎樣?我將下載並安裝到我的博客中,但插件中的.js文件被用戶的瀏覽器緩存。
在緩存時間到期之前,用戶是否會看到我的頁面的視圖,或者他們是否會自動從插件更新中爲新頁面提供服務?

+0

只是好奇:你爲什麼禁用ETag? (ETags會幫你解決你的問題,不是嗎?) – 2013-04-15 03:11:33

回答

1

您的擔憂是建立在:瀏覽器將確實繼續使用它們的緩存(可能過時)的副本,直到它按照您的配置過期。

這裏是Expires vs. Last-Modified/ETag的a helpful summary,包括一些建議的最佳實踐。

一般來說,在你的情況(因爲你似乎關心插件更新),我會去ETag/Last-Modified而不是Expires。

另一個想法:你不需要將js文件與所有其他類型捆綁在一起。只是一個啓發式的,但它可能會有所幫助:

# can be safely cached 
<FilesMatch ".(ico|jpg|png|gif|css|gz)$"> 
    ExpiresDefault now plus 30 days 
    FileETag None 
    Header unset ETag 
</FilesMatch> 

# don't cache or only cache briefly 
<FilesMatch ".js$"> 
    FileETag MTime Size 
    # or: ExpiresDefault now plus 6 hours 
</FilesMatch> 
0

此腳本只是緩存,ico,jpg,png,gif,css,js,gz文件不是html。 Wordpress將會很好。

如果你有一個客戶端JS崩潰,根本不要緩存JS。 或者重新運行這個,並將js設置爲緩存一小段時間,比如14400秒。