mod: как делать превью галереи и не "обрушить" браузер!
This commit is contained in:
@@ -311,6 +311,16 @@ pixels = image.quantize(colors=256) # или custom median-cut
|
|||||||
- Пагинация: 24 карточки на странице
|
- Пагинация: 24 карточки на странице
|
||||||
- `GET /gallery/{hash}` — полноэкранный просмотр SVG с кнопками "Скачать" и "Поделиться"
|
- `GET /gallery/{hash}` — полноэкранный просмотр SVG с кнопками "Скачать" и "Поделиться"
|
||||||
|
|
||||||
|
#### ВАЖНО: Оптимизация производительности рендеринга галереи (SVG-превью)
|
||||||
|
- **Проблема:** Десятки карточек с тысячами анимированных SVG-элементов могут перегрузить браузер клиента (CPU/GPU при одновременной перерисовке).
|
||||||
|
- **Решение для витрины галереи:**
|
||||||
|
- Карточки галереи выводятся через тег `<img src="..." loading="lazy">` (изолированный контекст рендеринга).
|
||||||
|
- Для предотвращения постоянного пожирания ресурсов анимация в SVG по умолчанию спит (`animation-play-state: paused`) и оживает только при наведении (`:hover { animation-play-state: running; }`).
|
||||||
|
- Дополнительно на контейнерах карточек используется CSS-свойство `content-visibility: auto` для отключения рендера невидимых вне экрана карточек.
|
||||||
|
- **Выдача пользователю («Копировать» и «Скачать»):**
|
||||||
|
- Пользователю всегда отдается «чистый» полнофункциональный SVG со стандартно запущенной анимацией (без ограничений `animation-play-state: paused`).
|
||||||
|
- На бэкенде/сервисе при сохранении для галереи модификатор паузы/ховера может вшиваться по умолчанию либо подставляться/вырезаться на лету при выдаче пользователю.
|
||||||
|
|
||||||
**CSS:**
|
**CSS:**
|
||||||
- Dev: Tailwind CDN (`<script src="https://cdn.tailwindcss.com"></script>`) + Purge content в конфиге
|
- Dev: Tailwind CDN (`<script src="https://cdn.tailwindcss.com"></script>`) + Purge content в конфиге
|
||||||
- Prod: `collectstatic` → `whitenoise` обслуживает скомпилированную статику
|
- Prod: `collectstatic` → `whitenoise` обслуживает скомпилированную статику
|
||||||
|
|||||||
Reference in New Issue
Block a user