Yuv*_*dam 1 python django caching
假设我有一个简单的视图,需要解析来自外部网站的数据.
现在它看起来像这样:
def index(request):
source = urllib2.urlopen(EXTERNAL_WEBSITE_URL)
bs = BeautifulSoup.BeautifulSoup(source.read())
finalList = [] # do whatever with bs to populate the list
return render_to_response('someTemplate.html', {'finalList': finalList})
Run Code Online (Sandbox Code Playgroud)
首先,这是否可以接受?
显然,这在性能方面并不好.外部网站页面非常大,我只提取了一小部分内容.我想到了两个解决方案:
首先,不要过早优化.让它工作.
然后,添加足够的日志记录以查看性能问题(如果有)确实存在.
您可能会发现最终用户的PC是最慢的部分; 实际上,当您不在浏览器中获取.JS库和.CSS以及艺术品和渲染时,从其他站点获取数据可能会非常快.
一旦你完全确定获取远程内容确实是一个问题.真.然后你必须做以下事情.
编写一个"crontab"脚本,不时地执行远程提取表单.
设计一个缓存远程结果的地方.数据库或文件系统,选择一个.
更新您的Django应用程序以从缓存(数据库或文件系统)而不是远程URL获取数据.
只有在您有绝对证据证明urllib2读取远程站点是瓶颈之后.
| 归档时间: |
|
| 查看次数: |
2077 次 |
| 最近记录: |