8

我正在尝试优化 Google 应用引擎上的页面服务时间,但我很难获得我想要的效果。

在我的 app.yaml 中,我使用了以下指令:

handlers:
- url: /assets
  static_dir: assets
  expiration: 7d

在资产文件夹下,我有我所有的图像、css 和 js。通过使用 7 天到期,我预计浏览器会使用本地缓存文件,而不是在 7 天内访问我的应用程序。

虽然,在我的资产的响应标头中,我得到以下信息:

Cache-Control:public, max-age=604800
Cache-Control:no-cache, must-revalidate

我了解使用这些标头,浏览器将在发布缓存版本之前检查我的应用程序是否更改了文件。(我可以有效地在资产文件夹下看到与我的文件相对应的一堆 304,用于刷新和简单的页面加载)。

谷歌应用引擎中是否有办法配置缓存行为,以便浏览器不会在 7d(在简单页面加载时)恢复这些文件,如到期中指定的那样?(即从缓存控制标头中删除“无缓存”)

PS 我不想在我的应用程序上启用 PageSpeed。我想完全控制提供的 html。

4

3 回答 3

6

您是否有任何机会使用管理员帐户登录?AppEngine 添加了一些关于管理员成本的私有标头并禁用缓存,因为该数据是私有的。注销为我解决了这个问题。

于 2013-08-21T15:03:29.170 回答
0

您在浏览器中加载页面的方式可能与此处相关:

  • 如果您按下 Ctrl 并使用刷新按钮重新加载页面,这将导致您的资源无条件重新加载,并返回 200s。
  • 如果您只是使用刷新按钮(或 F5 等等效键)重新加载,则将发送条件请求并为静态资源返回 304。
  • 如果您在地址框中按 Enter 键,将页面添加到书签并从那里加载,或者从超链接访问页面,则缓存 max-age 应该按预期工作。
于 2014-10-04T20:59:55.307 回答
0

我没有使用过期指令,GAE 将以下内容作为默认缓存设置发送:

缓存控制:公共,最大年龄=600

您可以尝试删除过期:7d 并查看 GAE 是否仅发送 1 个 Cache-Control 标头?

于 2013-06-18T08:38:34.827 回答