feat(web): офлайн-режим с кешем эскизов и превью

Добавлен service worker: оболочка приложения, ответы API и варианты
изображений (эскиз, превью, средний) сохраняются в офлайн-кеше браузера.
Ключ кеша картинки — путь объекта без подписи, поэтому обновление подписи
не плодит записи; оригиналы и видео не кешируются. Кеш ограничен по размеру
и вытесняет старые записи, при выходе из аккаунта очищается, а в верхней
панели появляется индикатор «Офлайн».

Добавлен манифест PWA; манифест отдаётся с типом application/manifest+json.
This commit is contained in:
iu
2026-10-20 22:27:24 +03:00
parent 961dff15da
commit afaaaab5f0
9 changed files with 373 additions and 1 deletions
+5
View File
@@ -364,6 +364,11 @@ func (s *Server) registerStatic(r *gin.Engine) {
if clean != "" {
if f, err := sub.Open(clean); err == nil {
f.Close()
// Манифест PWA отдаём с правильным типом: в системной таблице
// mime расширения .webmanifest нет.
if strings.HasSuffix(clean, ".webmanifest") {
c.Header("Content-Type", "application/manifest+json")
}
fileServer.ServeHTTP(c.Writer, c.Request)
return
}