当前位置: 首页 > 面试题库 >

每次部署网站时,如何让Google App Engine清除内存缓存?

颜啸
2023-03-14
问题内容

标题问了一切。我正在构建的网站上的内容根本不会很快改变,因此Memcache可能会存储几个月的数据,但当我进行更新时除外。有没有一种方法可以在每次部署站点时清除缓存?我正在使用Python运行时。

更新1

使用
jldupont
的答案,将以下代码放入主请求处理脚本中…

更新2

我已切换到Koen Bok在所选答案的注释中提到的方法,并os.environ['CURRENT_VERSION_ID']/在答案的第二次更新中为我的所有内存缓存键添加了有用的代码作为前缀。这个解决方案似乎比我之前发布的功能优雅得多。


问题答案:

您尝试过flush_all()功能吗?文档在这里。您将需要一些逻辑和状态来检测新部署,或者具有特殊的脚本来执行刷新。

已更新
:查看您的脚本之一的绝对路径:每次部署都会改变。您可以使用http://shell.appspot.com/进行实验:

  import sys
  sys.path

[‘/base/python_dist/lib/python25.zip’,’/base/python_lib/versions/third_party/django-0.96’,’/base/python_dist/lib/python2.5/’,’/
base / python_dist / lib /python2.5/plat-
linux2’、’/base/python_dist/lib/python2.5/lib-
tk’、’/base/python_dist/lib/python2.5/lib-
dynload’、’/base/python_lib/版本/1’、’/base/data/home/apps/shell/1.335852500710379686/’]

查看带有 /shell/1.335852500710379686/ 的行。

因此,只需保留此部署状态变量的快照(在memcache中;-)并进行比较即可执行刷新操作。

更新2 :@Koen Bok的建议,也可以使用环境变量 CURRENT_VERSION_ID (也是脚本文件绝对路径的一部分)。

 import os
 os.environ["CURRENT_VERSION_ID"]


 类似资料:
  • 我需要实现喜欢/不喜欢功能(针对匿名用户,因此无需注册)。问题是内容是由清漆提供的,我需要显示喜欢的实际数量。 我想知道像stackoverflow这样的网站是怎么做到的。假设页面缓存在Varnish中(仅针对匿名用户),所以每次用户对答案/问题进行投票时,页面都需要从缓存中清除。我说得对吗?当前投票数需要对其他用户可见。 在这种情况下,什么是好方法?我是否应该在用户每次点击“喜欢”按钮时发送

  • 我刚开始使用Material Design的ViewPager和Tablayout(自带Android Studio)。我创造了5个碎片,我能够使用一个刷卡他们的需要。 根据用户在Fragment2中的选择,我想删除Fragment3。但是,从表列中移除选项卡后,当滑动到第三个选项卡(在移除第三个选项卡之前是第四个选项卡)时,会显示错误的片段--系统将第三个片段存储在内存中并显示它。如果我销毁了该

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • 当用户卸载我的应用程序时,我需要能够清除我的应用程序的内部存储目录。我该怎么做? 我正处于构建安全应用程序的测试阶段,该应用程序要求在应用程序首次安装到用户手机时由管理员设置ID。ID文件不能在外部存储中,因为我不想任何篡改。 如果管理员向用户提供了不正确的 ID,他们将无法通过立即卸载应用程序来解决此问题。我已尝试卸载该应用程序(并清除缓存等)以清除ID数据。重新安装应用程序后,文件仍然存在,因

  • 问题内容: 我使用nginx作为前端服务器,我修改了CSS文件,但是nginx仍在使用旧文件。 我试图重新启动nginx,但没有成功,我已经用Google搜索,但是找不到清除它的有效方法。 一些文章说我们只能删除缓存目录:,但是我的服务器上没有这样的目录。 我现在该怎么办? 问题答案: 我遇到了完全相同的问题-我在Virtualbox中运行了Nginx。我没有打开缓存。但是看起来像已经设置好了,这