Ответ 1
Как и многие вещи в django sorl-thumbnail
, реализованы как просто, так и элегантно, и то, как вы его используете, является правильным.
Каждый раз, когда sorl-thumbnail
запрашивается новый эскиз, он проверяет, существует ли его в кеше:
- Если он существует, он возвращается.
- Если это не так, новый создается и сохраняется, а затем возвращается.
Таким образом, кеш миниатюр генерируется по мере необходимости. Ключ, хранилище значений - это средство хранения миниатюр, что позволяет им быстро искать и извлекать. Используя приведенные выше шаги, миниатюры будут сгенерированы и сохранены, поскольку они запрашиваются вашими пользователями.
Процесс генерации миниатюр по требованию работает хорошо, так как изображения постепенно добавляются на ваш сайт, миниатюры для новых изображений будут созданы по мере необходимости, а миниатюры для более старых изображений, полученных из хранилища.
Для сохранения эскизов sorl-thumbnail
используется комбинация базы данных и кеша памяти. База данных гарантирует, что все миниатюры будут сохранены при перезапуске приложения и/или веб-сервера. Эскизы затем будут загружаться в кеш памяти (как вы догадались) по требованию и, таким образом, обеспечить быстрое время загрузки для пользователя.
Чтобы ответить на ваши вопросы:
- Осуществлять ли его только в шаблоне то же самое, что использовать его в моделях или в представлении и создавать новые миниатюры для каждого из них?
Невозможно создать эскизы в моделях или представлениях, поскольку они генерируются по требованию, поскольку пользователь их запрашивает. Это очень эффективно. Думаю, вы могли бы написать script, чтобы запросить все эскизы, которые запускались в ночное время, чтобы обеспечить создание всех эскизов, хотя это, вероятно, не требуется.
- Как настроить различные миниатюры для разных изображений, как это можно сделать в easy_thumbnail?
Вся конфигурация выполняется в теге {% thumbnail %}
, если генерируются разные эскизы для одного и того же изображения, они будут храниться отдельно в хранилище ключей, значений.
- Как переопределить значения по умолчанию, например: переопределить значение Quality и т.д.
Здесь есть список настроек: http://sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html, все они должны быть установлены в файле settings.py
. По умолчанию качество установлено на 95, что довольно велико.
Изменить - установите качество jpeg в settings.py
...
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 %}
....
Шаблоны эскизов будут храниться как отдельные файлы в каталоге шаблонов и могут выглядеть примерно так:
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 %}
В каждом из дополнительных шаблонов могут быть сделаны все настройки для ваших "псевдонимов". В качестве альтернативы можно было бы создать дополнительный тег шаблона для чтения этих атрибутов из settings.py
, это то, что делает easy_thumbnail
, хотя для достижения результатов двух небольших шаблонов, указанных выше, потребуется много программистов.
Если у вас есть дополнительные вопросы о sorl-thumbnail
, я был бы рад помочь вам с ними.