2010-10-16 56 views
17

Google App Engine必須具有某種反向緩存代理,因爲當我從其中一個servlet設置響應標頭Cache-Control public, max-age=300時,對應用引擎的後續請求會顯示在如下日誌中:/testcaching 204 1ms 0cpu_ms 49kb,而未緩存的請求顯示在日誌中爲:/testcaching 200 61ms 77cpu_ms 49kb有關Google App Engine高速緩存代理的詳情?

無論如何,我的問題是:有沒有人有關於這個反向緩存代理的更多細節?

+3

你想要什麼樣的細節?有一個,它在你的用戶附近的端點託管,如果你問它,它會緩存數據。:) – 2010-10-18 09:35:13

+0

@Nick - 謝謝,這些都是很好的細節,我想我只是想知道我是否可以依靠它緩存我告訴它的內容,並且未來應用程序引擎不會發生任何變化刪除反向緩存代理 – Kyle 2010-10-18 15:19:57

+2

那麼,你永遠無法完全依靠緩存 - 這是一個內在的概率系統,因爲你的數據可能會在任何時候被驅逐,我們當然沒有計劃在不久的將來徹底刪除它,雖然。 – 2010-10-18 15:22:12

回答

19

最好的文檔,我發現關於App Engine的高速緩存代理是a post to the App Engine group。後面引用的相關部分爲後人。一切歸功於布蘭登沃茨:

「如果你想邊緣緩存工作,你需要確保你做下面的事情

  1. 組公共如果不設置公衆也不會曾經被緩存。
  2. 設置一個最大年齡。如果設置公開,但不指定最大年齡也不會被緩存
  3. 使用逗號。public, max-age=300工作正常。Public; max-age=300沒有。
  4. 套裝年齡大於60歲。61似乎緩存,60年沒有,可能有一些我將根據過期時間來緩存音量,但在我們運行的音量上61秒似乎緩存,而且看起來似乎沒有60。
  5. 設置年齡小於366天。 364天似乎工作。 365大部分時間都在工作。 366似乎從來沒有工作。因此那些人們討論的永不過期的版本化資產的「從不到期」類型的帖子。那麼10年並不是正確的答案。
  6. 過期日期似乎沒有幫助,看起來可能會阻止某些情況下的緩存。我認爲這可能是時鐘漂移。或者關於解析器對日期格式的挑剔。在瀏覽器中工作的東西並不總是在邊緣緩存中正常工作...(如Semi和逗號)
  7. 設置Pragma和Cache-Control。如果沒有設置Pragma Public,那麼緩存控制似乎被忽略。「