就像 djangosorl-thumbnail
中的许多东西一样,它的实现既简单又优雅,而且你使用它的方式是正确的。
每次sorl-thumbnail
要求新的缩略图时,它都会检查是否存在于其缓存中:
- 如果存在一个,则返回这个。
- 如果没有,则生成并存储一个新的,然后返回。
因此,根据需要生成缩略图缓存。键值存储是一种存储缩略图的方法,使它们可以快速查找和检索。使用上述步骤,将根据用户的请求生成和存储缩略图。
“按需”生成缩略图的过程效果很好,随着图像逐渐添加到您的网站,将根据需要创建新图像的缩略图,并从商店检索旧图像的缩略图。
存储缩略图Sorl-thumbnail
使用数据库和内存缓存的组合。数据库可确保在应用程序和/或 Web 服务器重新启动时保存所有缩略图。然后缩略图将按需加载到内存缓存中(您猜对了),从而确保用户的快速加载时间。
要回答您的问题:
- 仅在模板中实现它是否与在模型或视图中使用它并为每个视图创建一个新缩略图相同?
无法在模型或视图中生成缩略图,因为它们是根据用户请求而按需生成的。这是非常有效的。我想您可以编写一个脚本来请求所有缩略图,该脚本每晚运行以确保生成所有缩略图,尽管这可能不是必需的。
- 如何为不同的图像配置不同的缩略图,就像在easy_thumbnail中一样?
所有配置都在{% thumbnail %}
标签中完成,如果为同一图像生成不同的缩略图,这些将分别存储在 key、value 存储中。
这里有一个设置列表:http: //sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html,这些都应该在settings.py
文件中设置。质量默认设置为 95,非常高。
编辑 - 在 settings.py 中设置 jpeg 质量
...
THUMBNAIL_QUALITY = 60
THUMBNAIL_PROGRESSIVE = False
...
这两个添加在settings.py
项目文件中的任何位置都会将缩略图的 jpeg 质量降低到 60,并关闭渐进式 jpeg 的创建。
编辑 - 缩略图别名
中没有对缩略图别名的内置支持sorl-thumbnail
。实现它们的最简单方法可能是作为小的子模板,然后可以将其加载到您的主模板中。
所以一个页面模板,可能看起来像:
....
{% load thumbnail %}
....
<h3>Recent image uploads:</h3>
{% for item in recentUploads %}
{% include "bigThumbnail.html" %}
{% endfor %}
<h3>Older image uploads</h3>
{% for item in oldUploads %}
{% include "smallThumbnail.html" %}
{% endfor %}
....
The templates for the thumbnails would be stored as separate files in your template directory and could look something like:
bigThumbnail.html
{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
smallThumbnail.html
{% thumbnail item.image "40x40" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
In each of the sub templates, all the settings for your 'aliases' can be made. Alternatively, it would be possible to create an additional template tag to read these attributes from settings.py
, this is what easy_thumbnail
does, although would require a lot of programming to achieve the results of the 2 small templates above.
If you have further questions about sorl-thumbnail
, I would be happy to help you with them.