Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Изменение файла js
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Изменение файла js

Страниц (1): [1]
 

1. Арикус - 25 Июня, 2015 - 14:09:45 - перейти к сообщению
Скрипты находятся во внешних файлах:
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="jquery/common.js"></script>

Проблема в том, что, когда я их изменяю, браузер продолжает использовать старые скрипты, так как они сохранены в кэше.
Что сделать, чтобы скрипты обновлялись при их изменении? Могу придумать только изменение имени файла
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="jquery/common1.js"></script>

Но, может, есть более удобный способ?
2. IllusionMH - 25 Июня, 2015 - 14:15:08 - перейти к сообщению
Арикус, Ctrl + F5 либо в инструментах разработчика есть опция отключить кеширование.
3. Ts.Saltan - 25 Июня, 2015 - 15:06:10 - перейти к сообщению
Арикус пишет:
может, есть более удобный способ?

менять не имя файла, а query string?
CODE (htmlphp):
скопировать код в буфер обмена
  1. src="jquery/common.js?v=1.0"
4. IllusionMH - 25 Июня, 2015 - 15:49:29 - перейти к сообщению
Ts.Saltan, уже б время запихнули. Не ручками ж менять каждый раз
5. Ts.Saltan - 25 Июня, 2015 - 16:06:15 - перейти к сообщению
IllusionMH пишет:
Ts.Saltan, уже б время запихнули. Не ручками ж менять каждый раз

Если поставить метку времени - вообще кешироваться не будет.
Кеш это ж не плохо.
А изменение url даёт понять браузеру, что скрипты/стили уже не те.
Чтоб ручками всё не менять, поставить константу, и менять её значение.

ИМХО, самый оптимальный вариант - настроить сервер, чтоб работал с заголовками Modified, ETag и т.д.
6. IllusionMH - 25 Июня, 2015 - 16:23:35 - перейти к сообщению
Ts.Saltan, самый оптимальный вариант спросить ТСа: ему для локальной разработки это мешает или для сервера, где пользователи сидят с закешированными скриптами.
Арикус:
Локально - кеш убирать (варианты: обновление без кеша, дев тулы, время в гет параметре)
На серверах - зависит от сервера. Если все своё - можно и заголовками, если нет - способ инкрементить версию в гет параметре в зависимости от времени в каком-то конфиге.
7. nerv - 26 Июня, 2015 - 00:26:41 - перейти к сообщению
IllusionMH пишет:
если нет - способ инкрементить версию в гет параметре в зависимости от времени в каком-то конфиге

мы используем срез хеша последнего коммита
кстати, в когда последний раз смотрел в офф. доку гугла по кешированию, там черным по белому было написано не использовать query string для сброса кеша (или около того)
8. IllusionMH - 26 Июня, 2015 - 02:52:35 - перейти к сообщению

nerv, Круто с хэшом это круто! У нас туда версия.билд добавляется. Доступа к конфигам на проде никто не даст, чтобы настроить все нужные заголовки Улыбка
Инвалидация кеша - одна из двух главных проблем и сильно зависит от браузера. Доку не читал, но в ближайшее может и придется разорбраться в деталях
9. nerv - 26 Июня, 2015 - 10:18:54 - перейти к сообщению
IllusionMH пишет:
с хэшом это круто!

скорее очевидно Улыбка Было предложено мной)
1. надоело в конфиге руками менять (о чем постоянно забываешь)
2. не люблю помнить всякие ненужные вещи, стараюсь автоматизировать

Ниже копипаста из нашей базы знаний

---
Определение версии проекта (получение последнего хеша)

# C помощью команды гита
```
git rev-parse HEAD
```

# Чтение из файла
```
.git/refs/heads/master
```

# Ссылки
- http://stackoverflow[dot]com/questio[dot][dot][dot]nt-commit-in-git
---

UPD

IllusionMH пишет:
Инвалидация кеша - одна из двух главных проблем

вторая какая? Есть ли жизнь на Марсе? Ха-ха

у меня еще проблемы были:
1. при использовании ангуляра - аякс подгрузка шаблонов (html), кот. кешил браузер
2. слишком много файлов скриптов
решил используя сборщик (шаблон инклюдиться в модуль)
например, в этом проекте собирается модуль, делается UMD, минифицируется, генерятся карты исходного кода
10. IllusionMH - 26 Июня, 2015 - 15:56:24 - перейти к сообщению
nerv, я понимаю что хэш получить проблем не составляет, но у нас без изменения версии в конфиге невозможно собрать релиз (бэкэнд и фронтэнд). Такое полиси для проектов, так что его и использовали когда стартовали.
В релизах все собирается через r.js в пару файлов и используется версия в параметре(в основном шаблоне подставляется), на локалке require-js все нормально тащит сам.

В интернетах натывкался на такую цитату.
Цитата:
В программировании существует лишь два характерных затруднения: инвалидация кеша, наименование сущностей и ошибка на единицу

 

Powered by ExBB FM 1.0 RC1