使用memcached和sorl thumbnail预热缓存

0 投票
1 回答
618 浏览
提问于 2025-04-18 17:57

我刚开始接触缓存,最近在用 sorl-thumbnailmemcached

我在模板中创建缩略图,代码如下:

{% thumbnail song.artwork "185x185" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

这个方法很好用,可以成功生成缩略图。

我想做的是提前把所有图片的缓存预热一下。

这是我尝试的方法:

for song in Song.objects.all():
    im = get_thumbnail(song.artwork, '185x185', crop='center', quality=99) 

这个方法在缓存文件夹里创建了缩略图,但这些缩略图和原始图片没有关联。当我打开一个包含图片的页面时,它又会重新生成一个缩略图。我该如何使用 低级 API 来创建缩略图,并且让它和 Song 对象关联起来呢?

1 个回答

0

你的代码应该可以正常运行,除了使用了不同的选项。正如你在文档中看到的,sorl-thumbnail将多个选项放入一个哈希值中,这个哈希值决定了缩略图文件的名称。在你提供的代码中,额外的质量选项会在底层代码中生成一个不同的哈希值。因此,你可以这样使用:

for song in Song.objects.all():
    im = get_thumbnail(song.artwork, '185x185', crop='center') 

撰写回答