使用memcached和sorl thumbnail预热缓存
我刚开始接触缓存,最近在用 sorl-thumbnail
和 memcached
。
我在模板中创建缩略图,代码如下:
{% 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')