首页 > 解决方案 > Google App Engine 标准 Python3 应用程序仍在提供旧文件,即使所有版本都已删除

问题描述

我的部署在开发过程中一切正常,然后突然之间,我没有更改任何内容,Google 停止提供新文件并坚持使用某个版本。

我尝试删除除最后一个版本之外的所有版本: 在此处输入图像描述

我尝试清除内存缓存

它尝试了versions->diagnose->source直接在StackDriver上查看代码,这再简单不过了: 在此处输入图像描述

我尝试清除浏览器缓存并在另一台计算机上打开网址

并且仍然加载 url 为旧内容提供服务,就像它被缓存在某个地方一样。

如果我使用https://[VERSION].[APPID].appspot.com那么它提供最后一个版本。但仅使用https://[APPID].appspot.com服务于昨天的旧版本,不再存在于任何地方。

谷歌怎么了??

标签: pythongoogle-app-enginegoogle-cloud-platformgoogle-app-engine-python

解决方案


我发现破坏 Google App Engine 的所有缓存的唯一可靠技术是更改base URL应用程序的每个新版本。

app.yaml 示例

在此示例中,base href旋转从b0, b1, ... b9然后返回到b0。但是,这是任意的,只要您每两周不重复base hrefs一次以上。

runtime: python37
service: default

handlers:
- url: /b3/(.*\.(html|htm|map|js))$
  static_files: b3/\1
  upload: b3/.*\.(html|htm|map|js)$
  secure: always

- url: /b3/assets/
  static_dir: b3/assets
  secure: always

使用 Flask 模板的 index.html 示例

<!DOCTYPE html>
<html>
<head>
  <title>My App</title>
  <base href="/{{base_href}}/">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
<p>Hello world!</p>
</body>
</html>

简化开发过程的一种方法是创建一个 Python 脚本来更新base hrefs所有受影响的文件。


推荐阅读