Ala*_* H. 15 google-app-engine caching gzip
为什么Google App Engine似乎没有在我的CSS样式表和JavaScript文件中设置适当的缓存友好标题(如远期到期日期)?GAE何时gzip这些文件?我app.yaml将各自的目录标记为static_dirs,因此缺乏远期到期日期对我来说有点令人惊讶.
这是一个社区维基,用于展示有关GAE上静态文件缓存和gzipping的最佳实践!
Ala*_* H. 15
似乎GAE设置了近期缓存到期时间,但确实使用了etag标头.这是用来使浏览器可以问,"有这个文件,因为当它有一个改变etag的X68f0o?",听到"不- 304 Not Modified"回响应.
与远期到期日相反,这有以下权衡:
etag要使用远期的到期日期,需要两个步骤并进行一些理解.
您必须手动更新您的应用程序以请求新版本的资源,例如命名文件mysitesstyles.2011-02-11T0411.css而不是mysitestyles.css.有一些工具可以帮助自动化,但我不知道任何与GAE直接相关的工具.
配置GAE以使用default_expiration和/或expirationin 设置所需的到期时间app.yaml.关于静态文件的GAE文档
缓存清单是HTML5功能,可覆盖缓存标头.MDN文章,DiveIntoHTML5,W3C.但是,这不仅影响脚本和样式文件的缓存.小心使用!
gzip什么时候开?Google App Engine会尽力为支持它的浏览器提供gzip压缩内容.利用这种方案是自动的,不需要修改应用程序.
我们使用请求标头(Accept-Encoding,User-Agent)和响应标头(Content-Type)的组合来确定最终用户是否可以利用gzip压缩内容.这种方法避免了流行浏览器中带有gzip压缩内容的一些众所周知的错误.要强制提供gzip压缩内容,客户端可以提供"gzip"作为Accept-Encoding和User-Agent请求标头的值.如果不存在Accept-Encoding标头,则永远不会对内容进行gzip压缩.
一些现实世界的观察确实证明了这一点通常是正确的.假设一个支持gzip的浏览器:
content-type标题text/html; charset=utf-8)static_dirs(定义app.yaml)中gzips脚本和样式.| 归档时间: |
|
| 查看次数: |
5977 次 |
| 最近记录: |