python - Google App Engine 标准 Python3 应用程序仍在提供旧文件,即使所有版本都已删除
问题描述
我的部署在开发过程中一切正常,然后突然之间,我没有更改任何内容,Google 停止提供新文件并坚持使用某个版本。
我尝试清除内存缓存
它尝试了versions->diagnose->source直接在StackDriver上查看代码,这再简单不过了:
我尝试清除浏览器缓存并在另一台计算机上打开网址
并且仍然加载 url 为旧内容提供服务,就像它被缓存在某个地方一样。
如果我使用https://[VERSION].[APPID].appspot.com那么它提供最后一个版本。但仅使用https://[APPID].appspot.com服务于昨天的旧版本,不再存在于任何地方。
谷歌怎么了??
解决方案
我发现破坏 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
所有受影响的文件。
推荐阅读
- docker - 无法在 Kubernetes 中调用我的负载均衡服务
- c++ - 有没有办法在不使用递归的情况下获取参数包中的值?
- python - Matplotlib 动画为每一帧绘制相同的东西
- python - Azure Cosmos SQL 数据库会自动填充吗?
- sql - 当表按天分区时,BigQuery 如何按月/年查询分区?
- asp.net-mvc - ASP.NET 身份注册新用户以使用用户名作为用户名而不是电子邮件,但仍不显示谁已登录
- python - 我应该使用 softmax 还是 tf.nn.sigmoid_cross_entropy_with_logits 来生成每个类概率的多类分类?
- deep-learning - 神经隐藏层中的单元可以捕获相同的特征吗?
- go - golang 为切片切片(二维切片)中的现有元素赋值
- three.js - 如何将线框添加到 Three.js 中的实例化网格