情况:运行一个 Google App Engine 网站,我的静态内容的 default_expiration 设置为“14d”
问题:在 Chrome 和 Safari 中,访问 URL(不重新加载,只是将光标放在地址栏中并按 Enter 键)会导致使用 If-None-Match 标头触发大量请求。正如预期的那样,响应始终是 304 Not Modified。我可以看到这些请求在 Charles 或 Fiddler 等调试代理中被触发。
想要:完全避免针对静态内容的这些请求和 304 响应——只需信任浏览器的缓存内容(当它可用时)。
我们使用标准的“缓存静态内容很长时间,当我们需要破坏缓存时,我们会处理将 ?version={version} 修改附加到我们的查询字符串”系统,所以我们真的很想避免304 的。
信念:我认为这是由应用引擎随每个静态内容响应发送的 etag 标头引起的。应用程序引擎 SDK 不会向下发送此标头,并且在使用 SDK 时我看不到此 304 行为。
有什么建议吗?你能关闭应用引擎静态内容的 etags 吗?
更新了一个静态内容示例: http ://www.khanacademy.org/stylesheets/shared-package/compressed.css