我有一个模板,我想为django缓存。网址是这样的:
/cache_my_page/<object_number>/
这里有大约一百万个对象 - 所以我希望缓存1M个页面。有没有办法在用户加载之前预先缓存所有这些页面?或者django不提供这个,我需要深入研究像redis或memcache这样的东西吗?
答案 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