App Engine:部署时不更新静态文件

Jav*_*rín 8 google-app-engine caching google-cloud-platform

我使用以下设置将包含Angular SPA的HTML静态文件作为自定义域的全能处理程序推送:

- url: /(api|activate|associate|c|close_fb|combine|import|password|sitemap)($|/.*)
  script: gae.php

- url: /.*
  static_files: public/static/app/v248/es/app.html
  upload: public/static/app/v248/es/app.html
  expiration: "1h"
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我推新的app.html它不会更新.我试图改变本地路径,部署一个新的应用程序版本,甚至用自定义的PHP端点替换catch-all处理程序,但它不起作用,响应仍然是我上传的第一个app.html版本.

其他人遇到了同样的问题(CSS文件未在部署时更新(谷歌AppEngine)),它看起来与谷歌CDN缓存有关,但据我所知,没有任何方法来冲洗它.

Gab*_*nes 7

有一种方法可以刷新您的应用程序在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文件中删除该元素,这将有助于避免其他服务器意外缓存。


dse*_*sto 5

如您所想,在App Engine应用程序中的静态文件中执行更改时,由于cache,更改将不会立即可用。无法手动刷新Google Cloud中的缓存,因此,如果您要测试其工作方式,建议您将到期时间更改为较短的时间(默认为10分钟),然后根据需要设置适当的到期时间根据您的要求。

请记住,只需在app.yaml文件中设置适当的元素,就可以更改所有静态文件或仅选择的文件的静态缓存过期时间。

  • 就是这样,你是对的。我只能建议您降低测试目的的到期时间,正如前面所评论的,然后再次设置更合适的值。 (2认同)