Google app engine 如何缓存RSS源?
我使用GAE NDB数据存储中最新的10条记录生成RSS提要。数据库中的记录每周更新一次。如何避免每次用户请求RSS提要显示时对数据存储进行查询?例如,如何缓存它?您可以使用memcache来避免每次访问数据存储。您可能知道,查询不会缓存在NDB中 换句话说,尝试从memcache获取数据,如果失败,则从数据存储中获取数据,然后将其添加到memcache,以备下次使用 上面的示例使用60秒超时(在.add调用中的值为60),只需保留该参数,即可在memcache允许的时间内保持数据 同样来自一个类似的问题: key.get()将被缓存并从缓存中检索,但query.get()不会从缓存中检索。 从文档:查询不会在任何缓存中查找值。但是,如果缓存策略这么说,查询结果将写回上下文内缓存(但决不会写回Memcache) 因此,如果按键获取,则会自动从NDB缓存中获取(如果可用),但我个人没有使用过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允许的时间内保持数据 同样来自一
因此,构建您的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