2013-02-11 29 views
5

我试图优化谷歌应用引擎上的页面服务时间,但我在努力获得我想要的效果。谷歌应用引擎中的缓存控制

在我的app.yaml

,我用下面的指令:

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

资产文件夹下,我有我的所有图片,CSS和JS。通过使用7d过期,我会期望浏览器使用本地缓存文件,而不是7天到我的应用程序。

虽然,在我的资产响应报头,我得到如下:

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

据我所知,这些报头,浏览器会检查我的应用程序,如果为释放缓存的版本前更改了文件。 (我可以有效地看到一堆304对应于资产文件夹下的我的文件,用于刷新和简单的页面加载)。

Google应用引擎中有没有一种方法可以配置缓存行为,以便在过期时指定的浏览器不会为7d(简单页面加载)的文件回滚? (即,从高速缓存控制报头去除“无高速缓存”)

P.S.我不想在我的应用上启用PageSpeed。我想完全控制HTML服务。

+0

我正在从ajax请求中发现PageSpeed缓存私人信息!我试图设置缓存控制:无存储,但我仍然得到缓存控制:私人 – ZiglioUK 2013-05-03 02:11:08

回答

0

我没有使用期满指令和GAE发送以下内容作为默认高速缓存设置:

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

你能尝试删除过期:7d和看看GAE是否只发送1个Cache-Control头?

2

您是否有任何机会通过管理员帐户登录? AppEngine为管理员添加了一些private headers about the costs,并禁用缓存,因为这些数据是私密的。注销解决了我的问题。

0

你如何加载页面在浏览器可能与此有关:

  • 如果按Ctrl键并使用刷新按钮刷新页面,这将导致你的资源无条件重装与200S返回。
  • 如果您只是使用刷新按钮(或类似F5的键)重新加载,则会发送条件请求,并为静态资源返回304。
  • 如果在地址栏中按Enter键,将页面添加到书签并从那里加载,或者从超链接访问页面,则缓存max-age应该按预期工作。
+0

这些不太可能导致服务器发送'无缓存,必须重新验证'。 – poolie 2016-06-06 04:03:54