我有RSS feed第三方网站,它创建存储在缓存文件夹中的缓存。每次请求第一次需要25-40秒,然后从缓存中提供9-10分钟。
问题1:GAE
不提供写入文件系统。那我该如何提供缓存呢?
问题2:缓存超时后,请求每次需要25-40秒。我该怎么办?
有没有办法解决这个问题,或者我是否需要使用提供这两种设施的Google Compute Engine
?
我读过关于此的文章,但没有直接回答我的问题。在这里发布前2天就被困在这里了。谢谢。
答案 0 :(得分:0)
只需在HTTP响应中发回必要的缓存头即可缓存Appengine。
使用task queue查询用户请求之外的下一个结果,并准备要在数据存储区和/或内存缓存中提供的新数据。然后,后续用户请求可以快速提供可用的最新数据,而无需设置延迟。
答案 1 :(得分:0)
不使用文件系统存储文本,而是在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()
。