我使用以下设置将包含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缓存有关,但据我所知,没有办法冲洗它。
答案 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
执行后,一切都很好。希望对您有帮助