2010-10-16 55 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,那么缓存控制似乎被忽略。“