实际动态在我的GAE应用程序我有app.yaml中的以下处理:缓存的(假的)静态内容是关于GAE的Python
- url: /lang/strings.js
script: js_lang.py
所以要/lang/strings.js
通话将实际映射到js_lang .py请求处理程序将响应填充为application/javascript
。我希望将此响应缓存在浏览器中,以便请求处理程序仅在一段时间内被调用一次(例如,当我部署应用程序的新版本时,通过导入/lang/strings.js?v=xxxx
使“缓存”无效)
For正常的静态内容,有default_expiration
元素,这是非常方便的,并导致这样的HTTP响应头:
Expires: Fri, 01 Apr 2011 09:54:56 GMT
Cache-Control: public, max-age=600
好了,这样的问题:是有我返回头像这样的一个简单的方法,而不必明确地设置它们呢?或者,是否有代码片段可以接受几个基本参数,如“days”并产生期望的http-header?
编辑2011年4月12日
我非常地解决了这个通过简单设置两个头Expires
和Cache-Control
这样的:
import datetime
thirty_days_in_seconds = 4320000
expires_date = datetime.datetime.now() + datetime.timedelta(days=30)
HTTP_HEADER_FORMAT = "%a, %d %b %Y %H:%M:00 GMT"
self.response.headers["Expires"] = expires_date.strftime(HTTP_HEADER_FORMAT)
self.response.headers["Cache-Control"] = "public, max-age=%s" % thirty_days_in_seconds
相关:http://stackoverflow.com/questions/2426103/asking-browsers-to-cache-as-a ggressively尽可能 – balpha 2011-04-01 11:32:43
谢谢balpha - 我可能会最终明确设置激进的缓存标题。但发布这个看看是否有人已经解决了这个问题,或者如果有一些yaml请求处理程序设置我忽略了。 – 2011-04-01 11:41:58