現狀:運行與我的靜態內容的default_expiration設置了谷歌App Engine的網站爲「14D」如何在WebKit中控制Google App Engine緩存行爲(etags瘋了)?
問題:在Chrome和Safari瀏覽器,訪問URL(不重裝,只是把光標在地址欄並按Enter),會導致大量的請求被If-None-Match頭引發。如預期的那樣,響應總是304未修改。我可以看到這些請求被解僱,如Charles或Fiddler這樣的調試代理。
想要:爲了避免這些請求和304響應完全用於靜態內容 - 只需在瀏覽器緩存的內容可用時即可信任。
我們使用標準的「緩存靜態內容很長時間,當我們需要緩存緩存」系統時,我們會考慮在查詢字符串中添加?version = {version}修改,所以我們會真的很想避免304的。
信仰:我認爲這是由應用程序引擎發送的每個靜態內容響應引發的etag頭引起的。應用引擎SDK不會而不是向下發送此標頭,並且在與SDK無關時看不到此行爲。
有什麼建議嗎?你可以關閉應用程序引擎的靜態內容的etags嗎?
用一個例子一塊靜態內容更新:http://www.khanacademy.org/stylesheets/shared-package/compressed.css
你可以發佈一個URL到上述靜態內容嗎?然後有人可以查看你要返回的標題(過期等)。 – 2010-12-10 18:08:16
好主意,更新的問題 – kamens 2010-12-10 18:28:01
不錯。我並不是專家,但我認爲答案就在那裏。我看到12月24日星期五,看起來不錯。我還看到一個Etag標頭,一個緩存控件和一個時代,這些可能會影響瀏覽器是否緩存內容。 – 2010-12-10 18:33:23