【问题标题】:Google app engine - how to disable the cache谷歌应用引擎 - 如何禁用缓存
【发布时间】:2021-04-06 00:10:02
【问题描述】:

所以一些上下文:

我有一个在谷歌应用引擎上运行的 nodeJS api。默认情况下,我的所有 get 请求都会被应用引擎缓存 10 分钟。

我将 cloudflare 用于我的 API,因为这允许我在需要时从缓存中删除特定项目。

您可以想象这引起了一些问题,因为我的 CF 缓存已正确清除,但应用引擎不断返回旧数据。

根据文档,您可以在 app.yaml 文件中设置 default_expiration,但将其设置为 0 或 0 没有任何区别,并且 google 会一直缓存我的回复。

看起来,您也无法从 google 获取未缓存的内容。

现在我的明显问题是:有什么方法可以完全忽略这个缓存吗?最好不必将我的整个 API 的响应设置为 private 0s 缓存。

让我很恼火的是,谷歌强迫我使用这个缓存提供了关于整个问题的非常模糊的文档。

【问题讨论】:

  • 你指的是静态文件缓存吗?如果是这样,澄清这一点会很有帮助。
  • 它是默认的应用引擎响应缓存cloud.google.com/appengine/docs/standard/python/…它以请求URL作为完整键来缓存响应。
  • 我自己一直在尝试这个,看看我是否能找到任何可以回答的问题,但我似乎无法得到同样的错误。在我的情况下,考虑到我只是使用一个基本的 nginx 网站来测试它,只需刷新没有缓存的浏览器即可。您能否向我们提供您的 app.yaml 配置的代码 sn-p(当然可以显示),以便我们自己尝试解决此错误?

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


【解决方案1】:

您可以配置您的app.yaml 来定义缓存期。

如果您使用default_expiration,这将为应用程序的所有静态文件处理程序设置全局默认缓存期。如果省略,生产服务器默认将过期时间设置为 10 分钟。

要为各个处理程序设置特定的过期时间,请在 app.yaml 文件的处理程序元素中指定 expiration 元素。您可以更改网络代理和浏览器应缓存此处理程序提供的静态文件的持续时间。

default_expiration: "4d 5h"

handlers:
- url: /stylesheets
  static_dir: stylesheets
  expiration: "0d 0h"

【讨论】:

    【解决方案2】:

    似乎您指的是静态缓存(根据您的链接)。尝试缓存爆发技术,例如向 url 添加查询参数,例如

    https://<url>/?{{APP_VERSION_ID}}
    

    其中 APP_VERSION_ID 是您部署的应用程序的最新版本。这样,每次重新部署应用时,APP_VERSION_ID 都会更改,并且将始终加载最新版本的静态文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 2015-09-18
      • 2013-03-22
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多