出於測試目的,我有這個在我的Apache配置:的mod_pagespeed不發送預期的輸出與擴展緩存
<Directory "/home/http">
...
<FilesMatch "\.(html|htm)$">
Header unset Etag
Header set Cache-control "max-age=0, no-cache"
</FilesMatch>
<FilesMatch "\.(jpg|jpeg|gif|png|js|css)$">
Header unset Etag
Header set Cache-control "public, max-age=10"
</FilesMatch>
</Directory>
這基本上說來設置靜態資產有持續10秒的緩存。這又是爲了測試和演示的目的。
我直接導航到該文件
$ wget -O - --save-headers localhost/mod_pagespeed_example/images/Puzzle.jpg
Cache-control: public, max-age=10
工作正常測試它。但後來我嘗試加載頁面mod_pagespeed和extend_cache啓用
$wget -O - --save-headers localhost/mod_pagespeed_example/extend_cache.html?ModPagespeed=on&ModPagespeedFilters=extend_cache
<img src="images/Puzzle.jpg"/>
$wget -O - --save-headers localhost/mod_pagespeed_example/extend_cache.html?ModPagespeed=on&ModPagespeedFilters=extend_cache
<img src="http://localhost/mod_pagespeed_example/images/xPuzzle.jpg.pagespeed.ic.hgbHsZe0IN.jpg"/>
這是所有罰款和丹迪。初始請求不起作用,因爲它需要將信息加載到緩存中,但是從那裏它會正確地用緩存的哈希版本替換img標籤的src。
但是,這隻會持續UNTIL最大年齡。所以,如果我將它設置爲10秒,它將繼續指向http://localhost/mod_pagespeed_example/images/xPuzzle.jpg.pagespeed.ic.hgbHsZe0IN.jpg
,但是之後它將在10秒後再次恢復爲images/Puzzle.jpg
,屆時它將返回到緩存版本。
這是預期的行爲?我認爲pagespeed會在max-age之後檢查散列,如果它相同,則不會將其更改回原始值,而是繼續提供緩存文件。
這有點關係。如果我將max-age設置爲更有用的內容(比如60分鐘),這將允許我繼續更新這些資產文件並確保及時查看我的更新。但是,如果用戶每天訪問該網站一次,那麼這比最大年齡更大,並且它們將始終用於原始文件而不是緩存版本。