有什么方法可以强制重置AppEngine上所有缓存的静态文件?

And*_*son 14 google-app-engine caching google-cloud-platform

我遇到了一个已知的AppEngine问题,如果我转到我的应用程序的特定URL,则会缓存错误的静态内容,但是如果我附加一个?foo参数来破坏缓存,则显示正确的静态内容,以及VERSION.myapp. appspot.com也有效.

有没有办法在未修改的URL上显示正确的内容?

我很乐意删除该应用程序并恢复它或任何激烈的东西.该应用程序不是现场,但我需要它在几个小时内.任何可以使这些URL工作的东西,以便与AppEngine应用程序交谈的移动应用程序获得正确的数据.

编辑

cURLing标题,我看到:

HTTP/1.1 200 OK
ETag: "ZN9VxQ"
Date: Tue, 14 Aug 2012 02:00:58 GMT
Expires: Wed, 15 Aug 2012 02:00:58 GMT
Content-Type: text/html
Server: Google Frontend
Cache-Control: public, max-age=86400
Age: 34623
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)

我又冲了500秒?无论如何缩短那个?

编辑评论:

在app.yaml中,我有这个处理程序:

- url: /static
  static_dir: static
  expiration: 1s
Run Code Online (Sandbox Code Playgroud)

我现在尝试删除过期时间:

- url: /static
  static_dir: static
Run Code Online (Sandbox Code Playgroud)

我根据文档将其添加到app.yaml的顶部:

default_expiration: "1m"
Run Code Online (Sandbox Code Playgroud)

此外,删除文件不会使我在部署时消失.

Gab*_*nes 10

有一种方法可以缩短您的应用程序在Google Cloud上缓存的静态文件的到期时间。

转到您的Google Cloud Console并打开您的项目。在左侧汉堡菜单下,转到“存储”->“浏览器”。在这里,您应该至少找到一个存储桶:your-project-name.appspot.com。在“生命周期”列下,单击有关your-project-name.appspot.com的链接。删除任何现有规则,因为它们可能与您现在创建的规则冲突。

通过单击“添加规则”按钮来创建新规则。对于对象条件,选择“较新版本”选项并将其设置为1。请不要忘记单击“继续”按钮。对于操作,选择“删除”,然后单击“继续”按钮。保存新规则。

这项新规则最多可能需要24小时才能生效,但是至少对于我的项目而言,它只花了几分钟。一旦启动并运行,您的应用程序在your-project-name.appspot.com下提供的文件版本将始终是最新部署的版本,从而解决了该问题。另外,如果您要定期编辑静态文件,则应expiration从与这些静态文件相关的处理程序中删除任何元素,并default_expiration从app.yaml文件中删除该元素,这将有助于避免其他服务器意外缓存。


fre*_*rik 7

它取决于使用的缓存控制.检查firebug och chrome检查员并查看设置的失效日期.

如果您已将缓存控件设置为公共,则不会影响控件,因为文件在此过程中会缓存在各种代理和服务器上.

如果您使用缓存控制私有,您应该能够重置浏览器缓存并保持良好状态,但正如您所说,有时您会从Google的生产环境中获取错误的文件.我遇到了同样的问题.最快的解决方案是向加载的文件添加查询参数.