我有RSS饲料第三方网站创建缓存,这是存储在缓存文件夹中。每个请求第一次需要25-40秒,之后它从缓存中服务9-10分钟。
问题1:GAE不提供对文件系统的写入。那么我应该如何提供缓存呢?
问题2:缓存超时后,每次请求都需要25-40秒。我该怎么做呢?
有没有办法解决这个问题,或者我应该使用同时提供这两种功能的Google Compute Engine??
我读过关于这方面的文章,但没有直接回答我的问题。在这里发帖前2天被困在这里。谢谢。
发布于 2015-05-09 00:40:59
只需在HTTP响应中发回必要的缓存头,即可在Appengine上进行缓存。
使用task queue查询用户请求之外的下一个结果,并准备要在数据存储和/或memcache中提供的新数据。然后,后续的用户请求可以快速提供最新的数据,而不会造成设置延迟。
发布于 2015-05-09 03:44:54
使用NDB数据存储区中的TextProperty,而不是使用文件系统来存储文本。给它一个唯一的密钥,这样你以后就可以请求它了。
这也解决了缓存问题。通过键请求实体将使用内置的cache,或者如果它不在缓存中,它将从数据存储中获取它。
然后添加一个cron作业,每隔十分钟左右更新一次数据存储。
class RssFeed(ndb.Model):
KEY = 'RSS'
cache = TextProperty()
last_updated = DateTimeProperty(auto_now=True)
@classmethod
def update(cls):
# insert your code to fetch from the RSS feed
# cache = ...
rss_feed = cls.get_or_insert(key=self.KEY)
rss_feed.cache = cache
rss_feed.save()
@classmethod
def fetch(cls):
rss_feed = cls.get_by_id(self.KEY)
return rss_feed.cache只要需要缓存的数据,就调用RssFeed.update()和RssFeed.fetch()来更新缓存。
https://stackoverflow.com/questions/30127605
复制相似问题