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

时间:2015-10-19 20:47:12

标签: 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"

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

其他人遇到了同样的问题(CSS File Not Updating on Deploy (Google AppEngine)),看起来与谷歌CDN缓存有关,但据我所知,没有办法冲洗它。

4 个答案:

答案 0 :(得分:5)

在App Engine应用程序中执行静态文件更改时,由于cache,由于您已经想象,更改将无法立即生效。无法手动刷新Google Cloud中的缓存,因此我建议您将过期时间更改为较短的时间段(默认为10分钟),如果您要测试其工作原理,稍后根据设置适当的到期时间符合您的要求。

请记住,只需在 app.yaml 文件中设置正确的元素,即可更改for all static files或仅the ones you choose的静态缓存过期时间。

答案 1 :(得分:3)

有一种方法可以刷新您的应用在Google Cloud上缓存的静态文件。

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

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

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

答案 2 :(得分:2)

2020 年更新:

对于我的应用程序,我发现当我到达版本列表中的 50 Versions 时,App Engine 开始无法检测到我的最新应用程序部署。

查看(汉堡菜单)-> App Engine -> 版本

在下次部署时删除一堆旧版本后,它立即获取了我的最新更改。不确定这是否特定于我的帐户或结算设置,但已为我解决。

答案 3 :(得分:0)

我通过Google Cloud Platform中的服务获得了静态文件。我的问题是我没有执行

gcloud app deploy dispatch.yaml

执行后,一切都很好。希望对您有帮助