簡體   English   中英

谷歌應用引擎中的緩存控制

[英]Cache-control in google app engine

我正在嘗試優化 Google 應用引擎上的頁面服務時間,但我正在努力獲得我想要的效果。

在我的 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(在簡單的頁面加載時)不會返回這些文件,如到期時指定的那樣? (即從緩存控制標頭中刪除“無緩存”)

PS 我不想在我的應用程序上啟用 PageSpeed。 我想完全控制所提供的 html。

您是否有機會使用管理員帳戶登錄? AppEngine 添加了一些關於管理員成本的私有標頭並禁用緩存,因為該數據是私有的。 注銷為我解決了這個問題。

我沒有使用到期指令,GAE 發送以下內容作為默認緩存設置:

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

您可以嘗試刪除 expire: 7d 並查看 GAE 是否僅發送 1 個 Cache-Control 標頭嗎?

您在瀏覽器中加載頁面的方式可能與此處相關:

  • 如果您按下 Ctrl 並使用刷新按鈕重新加載頁面,這將導致您的資源無條件重新加載並返回 200 秒。
  • 如果您只是使用刷新按鈕(或類似 F5 的等效鍵)重新加載,則將發送條件請求並為靜態資源返回 304。
  • 如果您在地址框中按 Enter,將頁面添加到您的書簽並從那里加載,或者從超鏈接訪問該頁面,則緩存 max-age 應該按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM