Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何缓存RSS源?_Google App Engine_Caching_Rss - Fatal编程技术网

Google app engine 如何缓存RSS源?

Google app engine 如何缓存RSS源?,google-app-engine,caching,rss,Google App Engine,Caching,Rss,我使用GAE NDB数据存储中最新的10条记录生成RSS提要。数据库中的记录每周更新一次。如何避免每次用户请求RSS提要显示时对数据存储进行查询?例如,如何缓存它?您可以使用memcache来避免每次访问数据存储。您可能知道,查询不会缓存在NDB中 换句话说,尝试从memcache获取数据,如果失败,则从数据存储中获取数据,然后将其添加到memcache,以备下次使用 上面的示例使用60秒超时(在.add调用中的值为60),只需保留该参数,即可在memcache允许的时间内保持数据 同样来自一

我使用GAE NDB数据存储中最新的10条记录生成RSS提要。数据库中的记录每周更新一次。如何避免每次用户请求RSS提要显示时对数据存储进行查询?例如,如何缓存它?

您可以使用memcache来避免每次访问数据存储。您可能知道,查询不会缓存在NDB中

换句话说,尝试从memcache获取数据,如果失败,则从数据存储中获取数据,然后将其添加到memcache,以备下次使用

上面的示例使用60秒超时(在.add调用中的值为60),只需保留该参数,即可在memcache允许的时间内保持数据

同样来自一个类似的问题:

key.get()将被缓存并从缓存中检索,但query.get()不会从缓存中检索。

从文档:查询不会在任何缓存中查找值。但是,如果缓存策略这么说,查询结果将写回上下文内缓存(但决不会写回Memcache)

因此,如果按键获取,则会自动从NDB缓存中获取(如果可用),但我个人没有使用过


因此,构建您的RSS内容,并在渲染或删除它之前,将其保存到memcache。然后,当您更新创建内容时,只需使缓存版本无效(请参阅文档),以便下一个请求将从数据存储中获取内容,然后您可以将其放回缓存。

谢谢
构建RSS内容,在渲染或复制之前,将其保存到memcache
是关键!
def get_data():
  data = memcache.get('key')
  if data is not None:
      return data
  else:
      data = self.query_for_data()
      memcache.add('key', data, 60)
      return data