无法在 app.yaml 中为 Python 应用设置缓存过期时间
在我的GAE应用中,我是这样提供静态内容的(这些是我在app.yaml文件中的设置):
handlers:
- url: /css
static_dir: static/css
expiration: "10m"
- url: /js
static_dir: static/js
expiration: "10m"
尽管这里有一些信息:https://developers.google.com/appengine/docs/python/config/appconfig#expiration,但无论我是在开发服务器上测试还是上传我的应用,内容在浏览器中都从未被缓存。
我使用的是Chrome浏览器,请看一下请求头:
cache-control:max-age=0
而响应头是:
cache-control:no-cache, must-revalidate
pragma:no-cache
server:Google Frontend
status:304 Not Modified
根据我找到的一些回答,我尝试了在登录和未登录我的谷歌管理员账户的情况下进行测试,但结果没有变化。
如果能得到任何帮助,我将非常感激。谢谢!
当我未登录管理员账户时,收到的响应头是:
date:Fri, 25 Apr 2014 09:54:44 GMT
etag:"lhoIow"
server:Google Frontend
status:304 Not Modified
version:HTTP/1.1
2 个回答
1
在Martijn的提示之后,我把我的app.yaml文件中的过期值改成了:
handlers:
- url: /css
static_dir: static/css
expiration: "0d 10m"
- url: /js
static_dir: static/js
expiration: "0d 10m"
现在一切都按预期工作,我在响应中得到了以下头信息:
cache-control:public, max-age=600
content-encoding:gzip
现在一切看起来都正常了。
3
GAE(谷歌应用引擎)应该可以正常使用10m
这个值。很可能是因为你用的是谷歌的管理员账号登录。对于这种账号,GAE会返回no-cache
,也就是说不缓存。你可以试着在隐身模式下打开同样的页面,这样就能看到正确的缓存过期时间了。
默认情况下,GAE会把缓存设置为10分钟,所以即使你没有设置任何过期时间,你也应该看到10分钟,而不是no-cache。