【问题标题】:How to pre-cache a template for django如何为 django 预缓存模板
【发布时间】:2015-05-25 05:11:40
【问题描述】:

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

/cache_my_page/<object_number>/

这里有大约一百万个对象——所以我想缓存 100 万页。有没有办法在用户加载之前预先缓存所有这些页面?还是 django 不提供,我需要深入研究 redis 或 memcache 之类的东西才能做到这一点?

【问题讨论】:

    标签: python django caching redis


    【解决方案1】:

    您可以在请求-响应之外编译模板,但这可能不是您想要的。 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

    【讨论】:

    • “Django 是用于动态内容的” - 不能再不同意了。尽可能多地预编译是常见的做法。
    猜你喜欢
    • 2017-10-25
    • 2011-05-03
    • 2014-03-10
    • 2014-01-06
    • 2016-07-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多