google-app-engine - 正在提供的 Google App Engine 旧版本静态文件

标签 google-app-engine caching google-cloud-platform

我有一个 Flask 应用,我正在部署到谷歌应用引擎。

我一直在更改此应用程序中的 js 和 css 脚本,并将更新后的存储库部署到 gae。但是,当我在部署后重新加载 *.appspot.com url 时,浏览器中加载的 js 和 css 文件不是最新版本。

我不确定如何解决这个问题。我不知道这是我的浏览器中的缓存问题、我的 app.yaml 文件问题还是其他问题。

当我在应用引擎中查看已部署文件时,css 和 js 是应该在浏览器中加载但没有加载的当前版本。

enter image description here

这是我的app.yaml:

runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: ssl
  version: 2.7.11

handlers:
- url: /.*
  script: app.app

我是 gae 的新手。如果有人有任何建议,那就太好了。

谢谢!

更新:

我已经根据@GAEfan 的建议和@Dave W. Smith 链接到的页面的建议添加到我的 app.yaml 文件中,现在它看起来如下:

runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: ssl
  version: 2.7.11

handlers:
- url: /.*
  script: app.app
- url: /static
  static_dir: static
  expiration: '10s'

但是问题依然存在。我现在预计它可能与@Dave W. Smith 的其他建议有关,即“有旧实例在它们消失之前为请求提供服务。”

这是 GCP 平台的另一个屏幕截图,显示我的应用程序有多个实例正在运行,每个实例来自每个新的部署命令:

Multiple versions/instances of my app running on google app engine

最新版本是默认版本,屏幕截图显示 100% 的流量分配在该版本上。我是否应该在每次部署时删除应用程序的旧版本?如果是这样,可以使用 gcloud cli 来完成吗?有没有一种方法可以保留这些旧版本并确保静态文件肯定是从最新版本提供的?

再次感谢。

最佳答案

是的,听起来像是缓存问题。读这个:https://cloud.google.com/appengine/docs/standard/python/config/appref#static_cache_expiration

您可以通过为静态文件设置一个小的缓存时间来进行测试,如下所示:

- url: /static
  static_dir: static/
  expiration: '10s'

或者,更细化:

- url: /static/css
  static_dir: static/css/
  expiration: '10s'

- url: /static/js
  static_dir: static/js/
  expiration: '5m'

或全局通过:

default_expiration: '2s'

然后,当您对静态文件感到满意时,将缓存时间设置得更长一些,以加速您的站点并节省服务器时间。

关于google-app-engine - 正在提供的 Google App Engine 旧版本静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51125123/

相关文章:

google-app-engine - 我可以从 Google 应用程序引擎向 Google Hangouts 用户发送消息吗?

python - 在 Python 中智能缓存昂贵的对象

Asp.net 在客户端缓存下拉数据

kubernetes - Kubernetes-NodeUnderMemoryPressure问题

google-app-engine - appengine struts 2.3.4.1 错误(struts 试图重新加载服务器)

python : send data of form to one email address

android - 对 'posix_fadvise' 的 undefined reference

node.js - 如何在 Cloud Run 中获取环境变量?

google-app-engine - 为什么选择 Google Kubernetes Engine 而不是 Google AppEngine?

ios - 重复符号 Apple Mach-O 链接器错误