Во время разработки мне приходится постоянно «очищать кеш» в Firefox, чтобы он использовал последнюю версию файлов JavaScript.
Есть ли какая-то настройка (about: config), чтобы полностью отключить кеширование для файлов JavaScript? Или, если нет, для всех файлов?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пробовали использовать CTRL-F5 для обновления страницы?
правильно, он не всегда перезагружает JS / CSS в iframe, но в Firefox вы можете, по крайней мере, вывести этот фрейм на новую вкладку и перезагрузить там.
Я всегда использовал Ctrl-F5 .... затем я обнаружил, что он не загружает мои новейшие версии js-файлов, с которыми я работал :( Также был в iframe (я знаю, iframe - это дьявол, а не мой выбор ).
Ctrl-F5 не сбрасывает кеширование файлов javascript. что он делает (в основном), это очищает ваш сеанс и файлы cookie, но не кешированный javascript и таблицы стилей
Введите «about: config» в адресную строку Firefox и установите:
browser.cache.disk.enable = false
browser.cache.memory.enable = false
Если вы разрабатываете локально или используете новый атрибут манифеста HTML5, вам также может потребоваться установить следующее в about: config -
browser.cache.offline.enable = false
network.http.use-cache для меня не существует. Изменение browser.cache.offline.enable для меня не имеет значения.
Я не сомневаюсь, что это хороший ответ, но в последних сборках firefox он больше не соответствует действительности (сейчас я использую версию для разработчиков 47.0a2). Однако отключение кеширования в настройках веб-разработчика для меня эффективно.
Вы можете использовать CTRL-F5 для перезагрузки в обход кеша.
Вы можете установить настройки в Firefox, чтобы не использовать кеш
network.http.use-cache = false
Вы можете настроить свой веб-сервер для отправки заголовков no-cache / Expires / Cache-Control для файлов js.
Вот пример для веб-сервера apache.
Лучшая стратегия - спроектировать свой сайт так, чтобы он создавал уникальный URL-адрес для ваших JS-файлов, который сбрасывается при каждом изменении. Таким образом, он кэширует, когда не было изменений, но немедленно перезагружается, когда происходит какое-либо изменение.
Вам нужно будет настроить инструменты вашей конкретной среды, но если вы используете PHP / Apache, вот отличное решение как для вас, так и для конечных пользователей.
http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/
Если вы работаете с серверным кодом, вы можете сгенерировать случайное число и добавить его в конец src следующим образом ...
src = "yourJavascriptFile.js? randomNumber = 434534"
при этом randomNumber генерируется каждый раз случайным образом.
Это единственное решение, которое сработало для меня, помимо очистки кеша браузера вручную при каждом обновлении.
Панель инструментов веб-разработчика имеет возможность отключить кеширование, что позволяет очень легко включать и выключать его, когда вам это нужно.
CTRL-F5 или удерживание клавиши Shift при нажатии кнопки «Обновить» - это то, что я делал раньше, но функция «Отключить кэш» на панели инструментов веб-разработчика - отличный способ сделать это. Таким образом, вам не нужно полностью отключать кеш Firefox.
Однако не забудьте включить кеш после тестирования. ;)
@Shanimal, у меня работает в 14.0.1, может захотеть деинсталлировать / переустановить что ли.
@Lucas doh! Элементы на сервере, с которым я работал, кешировались, но я забыл удалить свой комментарий ... Спасибо.
Это больше не работает, пока Криспедерик не исправит несколько новых изменений Firefox в последней версии. Я бы выбрал решение about: config, которое лучше для разработчиков.
Я использую CTRL-SHIFT-DELETE, который активирует функцию конфиденциальности, позволяя вам одновременно очистить кеш, сбросить файлы cookie и т. д. Вы даже можете настроить его так, чтобы он просто ДЕЙСТВОВАЛ, вместо того, чтобы открывать диалоговое окно с просьбой подтвердить.
Я знаю, что воскрешаю древний вопрос, но я пытался решить эту проблему сегодня и нашел альтернативное решение. Переключение кеширования, когда я хочу протестировать, было для меня неприемлемым, и, как уже упоминалось, жесткое обновление (ctrl + shift + r) не всегда работает.
Вместо этого я решил поместить следующее в свой файл vhost.conf (это также можно сделать в .htaccess) в моей среде разработки:
<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>
В моей среде разработки это гарантирует, что js и css всегда будут извлекаться. Кроме того, это не влияет на остальную часть моего просмотра, и это также работает для всех браузеров, поэтому тестирование в chrome / ie и т. д. Также легко.
Нашел здесь фрагмент, а также некоторые другие полезные трюки с apache: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess
Чтобы мои клиенты всегда видели последнюю версию в производственной среде, мы увеличиваем строку запроса в js include при каждом обновлении, т.е.
jquery.somefile.js?v=0.5
Это заставляет браузеры моих клиентов обновлять свой локальный кеш, когда они видят новую строку запроса, но затем кэширует новую копию, пока файл не будет обновлен снова.
После 2 часов просмотра различных альтернатив это то, что у меня сработало.
Моим требованием было отключить кеширование файлов js и css в моем веб-приложении, защищенном Spring. Но в то же время кэширование этих файлов «внутри» определенного сеанса.
Передача уникального идентификатора с каждым запросом - один из рекомендуемых подходов.
И вот что я сделал: - Вместо
<script language = "javascript" src = "js/home.js"></script>
я использовал
<script language = "javascript" src = "js/home.js?id=${pageContext.session.id}"></script>
Любые минусы вышеуказанного подхода приветствуются. Проблемы с безопасностью ?
У последних двух опубликованных решений есть плюсы и минусы, но оба они, IMHO, отличные.
Вы можете захотеть, а можете и не захотеть, чтобы ваш идентификатор сеанса был встроен в ваш URL-адрес для большей безопасности. Но в разработке это не имеет значения, а что, если вы забудете его удалить? И это действительно работает? Разве вам не понадобится что-то вроде генератора последовательных чисел (количество попаданий, хранящееся в сеансе, или, может быть, даже если 1, то 0, если 0, то 1)?
Добавление идентификатора сеанса (или любого другого секвенсора) означает, что вам нужно не забывать добавлять его ко всем ресурсам, которые вы не хотите кэшировать. С одной стороны, это лучше, потому что вы можете просто включить свой идентификатор сеанса только с тем ресурсом, который вы активно разрабатываете и тестируете. С другой стороны, это означает, что вы должны это сделать, и вы должны не забыть удалить это для производства.
Изменение файла vhost.conf или .htaccess отлично справляется с этой задачей без необходимости помнить о добавлении и удалении идентификатора сеанса. Но обратная сторона - производительность всех ресурсов js и css будет затронута, и если у вас большие файлы, это замедлит вашу работу.
Оба кажутся отличными, элегантными решениями - в зависимости от ваших потребностей.
Нет специальной опции для отключения кеширования только для JavaScript, вам придется полностью отключить кеширование.
FireBug имеет возможность отключить кеш браузера в раскрывающемся меню вкладки «Сеть».
В более поздних версиях Firefox, таких как Nightly, есть опция «отключить кеш», вы можете найти ее, щелкнув шестеренку. И эти параметры работают только в текущем сеансе, что означает, что когда вы закрываете инспектор и перезапускаете его, вам нужно снова проверить его, если вы хотите отключить перехват.
Хотелось бы, чтобы был способ отключить кеш глобально. Очень неприятно проверять каждый раз, когда открываю инспектор.
На той же странице вы хотите отключить кеширование, сделайте следующее: К вашему сведению: версия, над которой я работаю, - 30.0
Ты можешь :



После этого он будет перезагружать страницу из своей собственной (вы находитесь), и каждая вещь повторно загружается, и любой дальнейший запрос также возвращается каждый раз, и вы можете держать веб-разработчика открытым всегда, чтобы следить и убедиться, что он всегда включен (проверьте) .
В firefox 45 параметры кеширования диска можно установить, изменив значение: browser.cache.disk.enable
Значение можно установить на странице «about: config».
На http://kb.mozillazine.org/About:config_entries#Browser я нашел следующее описание для "browser.cache.disk.enable":
True (по умолчанию): использовать кэш диска до объема, указанного в browser.cache.disk.capacity False: отключить кеширование диска (эффект аналогичен установке browser.cache.disk.capacity на 0)
Инструменты разработчика Firefox 48
Позволяет отключать кеш только при открытой панели инструментов, что идеально подходит для веб-разработки:
https://stackoverflow.com/a/27397425/895245 имеет аналогичное содержимое, но с тех пор расположение немного изменилось.
Спасибо ... там (и в этом потоке) есть информация о настройке network.http.use-cache на false ... но в моей версии FF (53) этот параметр больше не существует ... Этот метод намного превосходит в любом случае.
Во-первых, это легко сделать, например, с помощью PHP, чтобы заставить браузер обновлять файлы в зависимости от даты кеширования (времени истечения срока). Если вам это просто нужно для экспериментальных нужд, попробуйте использовать ctrl + shift + del, чтобы сразу очистить весь кеш внутри браузера Firefox. Третье решение - использовать множество надстроек, выходящих из Firefox, для очистки кеша на основе временных рамок.
Я действительно сомневаюсь, что это работает надежно, по крайней мере, при наличии фреймов и наборов фреймов.