Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не изменяется javascript? (https://javascript.ru/forum/misc/77669-pochemu-ne-izmenyaetsya-javascript.html)

izumov 04.06.2019 19:24

Почему не изменяется javascript?
 
Изменяю файл javascript гружу по ftp уго на сайт. Открываю страничку и в отладчике вижу старый код. Почему так происходиит?
Как добиться чтобы грузилась последняя версия файла ?

laimas 04.06.2019 19:29

Цитата:

Сообщение от izumov
Открываю страничку и в отладчике вижу старый код. Почему так происходиит?

Потому, что это взято из кеша браузера, а не по сети.

Цитата:

Сообщение от izumov
Как добиться чтобы грузилась последняя версия файла ?

Можно добавлять к пути как параметр время последнего доступа к файлу (его изменение).

Malleys 05.06.2019 00:43

Цитата:

Сообщение от laimas
Можно добавлять к пути как параметр время последнего доступа к файлу (его изменение).

Но в production такое не нужно! Вам нужно такое только в отладчике. Например, в Chrome DevTools вам нужно во вкладке Network поставить галочку рядом с Disable Cache.

laimas 05.06.2019 04:14

Цитата:

Сообщение от Malleys
Но в production такое не нужно! Вам нужно такое только в отладчике.

Офигеть. Нужно вообще-то знать о Last-Modified и ETag. А галочки себе ставьте.

izumov 05.06.2019 08:34

Просьба без эмоций офигеть или нет. Учиться не стыдно.Галочка не помагает все равно загружается вчерашняя страничка а я сейчас отлаживаю код.на локальном сервере все работает а вот с работой на сервере развертывания возникли проблемы.
хотя в коде странички был мета тег
<meta http-equiv="Cache-Control" content="no-cache">
все равно сервер уверенно выдает мне старую версию странички и подключаемого скрипта.

laimas 05.06.2019 12:28

Цитата:

Сообщение от izumov
Просьба без эмоций офигеть или нет. Учиться не стыдно.

Так я и не вам. :)

Я не буду пересказывать, что такое ETag, найдите в сети и обязательно прочтите. Там же найдете как это можно включить на серверах nginx и Apache. Его поддержка обеспечивается всеми современными браузерами.

Но можно сделать и так, если что-то по каким-то причинам у вас не получится. Я не знаю каким образом у вас формируются страницы, но не проблема и в случае использования шаблонизаторов, и непосредственного вывода добавить к пути файла параметр запроса. Таким параметром будет являться последнее время доступа к файлу. Например, если у вас на сервере РНР, то можно так:

<script src="path/file.js?<?=filemtime('path/file.js')?>"></script>

и к пути будет подставляться временная метка последнего доступа к файлу. Если файл изменился, то она будет новой, а значит браузер возьмет файл не из кеша, а по сетевому адресу.


Часовой пояс GMT +3, время: 18:15.