Задать вопрос
@Iceforest

При обновление js скрипта в git все меняется на сервере, но на сайт для пользователей отдается через рандомное время. Куда копать?

на сайт для пользователей измененный скрипт отдается через рандомное время, бывает обновиться через 5 минут, в бол-ве случаях через часов 5-8.
Кэширование пробовали полностью отключать, сейчас поставили 30 сек, но проблема остается. мы уже не знаем куда копать, и на что грешить.
в браузере:
Cache-Control: max-age=30, public
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/x-javascript
Date: Thu, 27 Feb 2020 07:13:24 GMT
ETag: W/"5e538d92-8105"
Expires: Thu, 27 Feb 2020 07:13:54 GMT
Last-Modified: Mon, 24 Feb 2020 08:47:14 GMT
Server: nginx/1.12.2
Transfer-Encoding: chunked

сейчас nginx конфиг такой:

location ~* \.js$ {
       expires 30;
       add_header Cache-Control public;


проблему судя по всему обнаружили, по крайней мере, понятно как сразу отдать клиенту нужный js. Если мы заходим в папку через winscp и нажимаем обновить, то сразу все происходит. Как это можно автоматизировать?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Копать стоит в инвалидацию кеша путём смены url до .js для каждой новой версии файла.
Когда вместо script.js у вас будет некое версионирование
Например script.vXXX.js либо используют хеш от содержимого script.MD5(от содержимого скрипта).js = script.adadadasdadadsd.js и соотв-но при модификации скрипта будет меняться и url

Этот подход лучше всех остальных, так как позволяет реализовать инвалидацию кеша css/js при изменении файла, а так же эффекивно кешировать на клиенте (можно будет сразу на год)

За примером далеко ходить не надо, откройте исходный код этой страницы и увидите как пример использования этого подхода
https://qna.habr.com/frontend.5e15b533-1a38-4c3c-b...
https://qna.habr.com/frontend.5e15b533-1a38-4c3c-b...
Ответ написан
@RuComMarket
Битрикс FullStack разработчик
копайте в изучение битрикса. Если пользуетесь гитом для публичной разработки, значит разработку на битриксе знаете слабовато, могу предположить, что костылей в вашем коде больше чем кастомизации.
включите объединение скрипта в битриксе, он будет выдавать ссылку с хэшем, каждое изменение - это новый скрипт для браузера, который будет кэшироваться по новому в том числе и на стороне сервера(но новый вариант выдается начиная со 2-го запроса, т.к. при первом запросе после изменений, отдается сначала ранее закэшированный вариант, а затем кэшируется новый), к тому же это уменьшит объем передаваемых данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы