我有一个Django视图,它从外部网站接收部分数据,我使用urllib2/BeautifulSoup解析.
这个操作相当昂贵,所以我使用低级缓存API缓存它约5分钟.但是,在我转到外部站点解析新数据时,在缓存数据到期后访问站点的每个用户将收到几秒钟的显着延迟.
有没有办法懒洋洋地加载新数据,以便没有用户会得到那种延迟?或者这是不可避免的?
请注意,我在共享托管服务器上,因此请记住您的答案.
编辑:感谢您的帮助到目前为止.但是,我仍然不确定如何使用我将调用的python脚本完成此操作.我做的基本测试表明django缓存不是全局的.这意味着如果我从外部脚本调用它,它就不会在框架中看到缓存数据.建议?
另一个编辑:想到它,这可能是因为我仍在使用本地内存缓存.我怀疑如果我将缓存移动到memcached,DB,无论如何,这将被解决.
所以你想安排一些定期运行的东西?以一些CPU时间为代价,您可以使用这个简单的应用程序.
或者,如果您可以使用它,则每5分钟一次的cron作业是:
*/5 * * * * /path/to/project/refresh_cache.py
Web主机提供了不同的设置方法.对于cPanel,请使用Cron Manager.对于Google App Engine,请使用cron.yaml
.对于所有这些,你需要设置环境中的refresh_cache.py
第一个.
顺便说一下,响应用户的请求被认为是懒惰的缓存.这是先发制人的缓存.并且不要忘记缓存足够长的时间来重新创建页面!