2013-02-11 27 views
5

我試圖優化谷歌應用引擎上的頁面服務時間,但我在努力獲得我想要的效果。谷歌應用引擎中的緩存控制

在我的app.yaml

,我用下面的指令:

handlers: 
- url: /assets 
    static_dir: assets 
    expiration: 7d 

資產文件夾下,我有我的所有圖片,CSS和JS。通過使用7d過期,我會期望瀏覽器使用本地緩存文件,而不是7天到我的應用程序。

雖然,在我的資產響應報頭,我得到如下:

Cache-Control:public, max-age=604800 
Cache-Control:no-cache, must-revalidate 

據我所知,這些報頭,瀏覽器會檢查我的應用程序,如果爲釋放緩存的版本前更改了文件。 (我可以有效地看到一堆304對應於資產文件夾下的我的文件,用於刷新和簡單的頁面加載)。

Google應用引擎中有沒有一種方法可以配置緩存行爲,以便在過期時指定的瀏覽器不會爲7d(簡單頁面加載)的文件回滾? (即,從高速緩存控制報頭去除「無高速緩存」)

P.S.我不想在我的應用上啓用PageSpeed。我想完全控制HTML服務。

+0

我正在從ajax請求中發現PageSpeed緩存私人信息!我試圖設置緩存控制:無存儲,但我仍然得到緩存控制:私人 – ZiglioUK 2013-05-03 02:11:08

回答

0

我沒有使用期滿指令和GAE發送以下內容作爲默認高速緩存設置:

緩存控制:公衆,最大年齡= 600

你能嘗試刪除過期:7d和看看GAE是否只發送1個Cache-Control頭?

2

您是否有任何機會通過管理員帳戶登錄? AppEngine爲管理員添加了一些private headers about the costs,並禁用緩存,因爲這些數據是私密的。註銷解決了我的問題。

0

你如何加載頁面在瀏覽器可能與此有關:

  • 如果按Ctrl鍵並使用刷新按鈕刷新頁面,這將導致你的資源無條件重裝與200S返回。
  • 如果您只是使用刷新按鈕(或類似F5的鍵)重新加載,則會發送條件請求,併爲靜態資源返回304。
  • 如果在地址欄中按Enter鍵,將頁面添加到書籤並從那裏加載,或者從超鏈接訪問頁面,則緩存max-age應該按預期工作。
+0

這些不太可能導致服務器發送'無緩存,必須重新驗證'。 – poolie 2016-06-06 04:03:54