【发布时间】:2015-05-25 05:11:40
【问题描述】:
我有一个模板,我想为 django 缓存。网址是这样的:
/cache_my_page/<object_number>/
这里有大约一百万个对象——所以我想缓存 100 万页。有没有办法在用户加载之前预先缓存所有这些页面?还是 django 不提供,我需要深入研究 redis 或 memcache 之类的东西才能做到这一点?
【问题讨论】:
标签: python django caching redis
我有一个模板,我想为 django 缓存。网址是这样的:
/cache_my_page/<object_number>/
这里有大约一百万个对象——所以我想缓存 100 万页。有没有办法在用户加载之前预先缓存所有这些页面?还是 django 不提供,我需要深入研究 redis 或 memcache 之类的东西才能做到这一点?
【问题讨论】:
标签: python django caching redis
您可以在请求-响应之外编译模板,但这可能不是您想要的。 Django 用于动态内容。虽然如果你的对象几乎没有改变,你当然可以遍历你的对象,将请求的结果内容转储到一个静态文件中,并让它由 nginx 提供服务。
https://docs.djangoproject.com/en/1.7/ref/templates/api/#compiling-a-string
虽然动态内容也有更优雅的解决方案。 此处详细描述了如何避免重新呈现之前请求的 url:
http://www.djangobook.com/en/2.0/chapter15.html
或者看看像 Varnish 这样的解决方案,将 Django 排除在外:
Varnish 是一款位于我们的负载平衡器之间的软件 以及我们的 Django 后端并充当 HTTP 缓存层。这是什么 意味着它可以缓存整个 HTTP 响应,甚至不需要 访问 Django 服务器,如果我们知道该请求不是唯一的。
http://blog.disqus.com/post/62187806135/scaling-django-to-8-billion-page-views
【讨论】: