этого вопроса?
Варианты которые пробовал, но не работают:
1. Диркетивы в nginx
location / {
try_files $uri /index.html;
expires -1;
}
location / {
add_header Cache-Control "no-cache, no-store, must-revalidate";
try_files $uri /index.html;
}
Оба варианта отдают не кешированный контент, но...
Браузер упорно открывает то, что загружал ранее. И если веб-сборка загружалась ранее, то открывается она, а не новая версия с сервера.
2. Добавление версии в index.html
Дописать scriptTag.src = 'main.dart.js?v=123456'; - тоже не работает.
Всё равно открывается та сборка, которая загружалась ранее.
Деплою на сервер веб-сборку версии 16.
На компе открывается версия 15.
В мобильном браузере - версия 14.
И это при том, что вся история мобильного браузера удалена.
Кто и каким образом смог побороть кеш?
в хром дебаг тулз выставить disable cache?
Только увидел, сори... Немного не о том вопрос... Я выливаю на сервер сборку и у пользователя загружается не она, а предыдущий билд. Сегодня разбирался целый день. В pubspec.yaml есть version и при смене номера версии, flutter_service_worker.js отдаёт новую версию. И это +- работает на десктопном браузере. Но в мобильном браузере сам flutter_service_worker.js кешируется намертво и даже очистка истории моб.браузера не помогает... Запрет кеширования в nginx, дописка ?v=123 к main.dart.js в index.html и сборка билда с --pwa-strategy=none никак вопрос не решает. Единственный виход - который приходит в голову - проверять в клиенте актуальность загружаемого билда и при неактуальности дёргать js-скрипт который будет чистить кеш браузера и перезагружать страничку. Но как это сделать, ещё не знаю. Других некостыльных вариантов не придумал. Может есть ещё идеи?
Обсуждают сегодня