如何预先缓存django的模板

时间:2015-03-22 00:03:46

标签: python django caching redis

我有一个模板,我想为django缓存。网址是这样的:

/cache_my_page/<object_number>/

这里有大约一百万个对象 - 所以我希望缓存1M个页面。有没有办法在用户加载之前预先缓存所有这些页面?或者django不提供这个,我需要深入研究像redis或memcache这样的东西吗?

1 个答案:

答案 0 :(得分:1)

您可以在请求 - 响应之外编译模板,但这可能不是您想要的。 Django用于动态内容。虽然如果您的对象几乎没有变化,您当然可以遍历您的对象,将请求的结果内容转储到静态文件中,并让它由nginx提供。

https://docs.djangoproject.com/en/1.7/ref/templates/api/#compiling-a-string

虽然动态内容也有更优雅的解决方案。 以下详细介绍了如何避免重新呈现之前请求的网址:

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