Django sorl缩略图-缓慢的模板渲染

Django sorl缩略图-缓慢的模板渲染,django,performance,django-templates,sorl-thumbnail,Django,Performance,Django Templates,Sorl Thumbnail,我的模板有严重的执行问题。经过一些测试,我发现渲染最慢的部分是由sorl缩略图生成的缩略图。 以下是我的模板中发布的部分: {% for listing in listings %} <li class="pic_view"> <ul> <li class="picture"> <a href="{% url 'listing' listing.id listing.titl

我的模板有严重的执行问题。经过一些测试,我发现渲染最慢的部分是由sorl缩略图生成的缩略图。 以下是我的模板中发布的部分:

{% for listing in listings %}
    <li class="pic_view">
        <ul>
            <li class="picture">
                <a href="{% url 'listing' listing.id listing.title %}">
                    {% thumbnail listing.get_picture "240x143" crop="center" as im %}
                        <img src="{{ im.url }}">
                    {% empty %}
                        tc
                    {% endthumbnail %}
                    <div class="overlay"></div>
                </a>
            </li>
            <li class="artist">
                <a href="{% url 'profile_artist' listing.artist_id listing.artist.user.first_name %}">
                    {% thumbnail listing.artist.get_avatar "60x60" crop="center" as im %}
                        <img src="{{ im.url }}">
                    {% empty %}
                        tc
                    {% endthumbnail %}
                </a>
            </li>
        </ul>
    </li>
{% endfor %}
在这一点上你能给我一些建议吗。上面的数字是在Debug=True时测量的,但当标志为False时没有区别。同样根据Django文档,我已经包括了以下模板加载器:


Sorl在幕后这么做文档中的章节是,这里是TL;DR版本

根据原始文件名和选项计算哈希值 鉴于 如果该散列已经存在,请检入数据库,如果存在, 传递关联的缩略图 如果没有,请调整图像大小,将其存储在媒体位置,然后创建 具有哈希/文件名关联的数据库记录,传递 缩略图
也就是说,4.5秒的数据库查找时间太长了。这里还发生了其他一些事情。

所以缩略图会动态生成缩略图,因此操作非常耗时,您需要的是使用cronjob或芹菜创建缩略图,首选大小。有一个包已经被称为它做什么,你正在寻找和使用芹菜。因此,如果缩略图不可用,则在缩略图可用时立即显示虚拟图像,并对其进行渲染。还可以使用memcached作为django的缓存后端,这在性能方面非常好。

sorl使用哪种后端?有不同的选择,但我认为memcached或redis应该比使用DB更快,特别是如果你有很多条目的话。是的,你是对的,但我找不到任何理由。我已经检查了查询的时间,即使添加了缩略图标记,时间也大约为32ms-40ms。第一次加载将生成图像,后续加载将从缓存中进行。OP的问题在于后续加载,与图像生成无关。
- 8512 ms on first rendering
- 4680 ms on reload
-  112 ms when thumbnail tags are removed
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    ('django.template.loaders.cached.Loader', (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )),
  )