Как отключить кеширование в Firefox?


143

Во время разработки мне все время приходилось «очищать кеш» в Firefox, чтобы он использовал последнюю версию файлов JavaScript.

Есть ли какая-то настройка (about: config), чтобы полностью отключить кэширование для файлов JavaScript? Или, если нет, для всех файлов?

Ответы:


229

Введите about: config в адресную строку Firefox и установите:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

Если вы разрабатываете локально или используете новый атрибут манифеста HTML5, вам, возможно, придется установить следующее в about: config -

browser.cache.offline.enable = false

как я не узнал об этом маленьком драгоценном камне? Все виды вкусностей в about: config!
ABrowne

2
network.http.use-cache для меня не существует. Изменение browser.cache.offline.enable не имеет значения для меня.
Кертис

1
Я не сомневаюсь, что это хороший ответ, но, похоже, он больше не соответствует истине в последних сборках Firefox (сейчас я использую версию для разработчиков 47.0a2). Отключение кеширования в настройках веб-разработчика мне эффективно.
JosephStyons

61

Web Developer Toolbar имеет возможность отключить кэширование , что делает его очень легко включить и выключить , когда вам это нужно.


1
CTRL-F5 или нажатие клавиши Shift при нажатии кнопки «Перезагрузить» - это то, что я делал в прошлом, но функция «Отключить кэш» панели инструментов веб-разработчика - отличный способ сделать это. Вам не нужно полностью отключать кеш Firefox таким образом.
Джон Онстотт

1
Вы должны помнить, что после тестирования кеш должен быть включен. ;)
нейролабс

1
@Shanimal, у меня работает в 14.0.1, вы можете захотеть удалить / установить или что-то еще.
Лукас

@ Лукас дох! Элементы на сервере, с которыми я работал, кэшировались, но я забыл удалить свой комментарий ... Спасибо.
Shanimal

1
Это больше не работает, пока Криспедерик не исправит несколько новых изменений в Firefox в последней версии. Я бы выбрал решение about: config, которое лучше для разработчиков.
Ligemer

12

Вы пытались использовать CTRL- F5чтобы обновить страницу?


6
У меня действительно есть сомнения, что это работает надежно, по крайней мере, при наличии фреймов и фреймов.
Thilo

2
правильно, он не всегда перезагружает JS / CSS в iframe, но в Firefox вы можете, по крайней мере, вставить этот фрейм в новую вкладку и перезагрузить ее там.
Scunliffe

Я всегда использовал Ctrl-F5 .... потом я обнаружил, что он не загружает мои новейшие версии файлов js, в которых я работал :( Также был в iframe (я знаю, iframes - это дьявол, а не мой выбор) )
Громер

Ctrl-F5 не сбрасывает кеширование файлов JavaScript. что он делает (в основном) - очищает сеанс и куки, но не кэшированный JavaScript и таблицы стилей
AceMark

10

Нет конкретной опции, чтобы отключить кэширование только для JavaScript, вам придется полностью отключить кэширование.

FireBug имеет возможность отключить кэш браузера в раскрывающемся меню вкладки «Сеть».


8

На той же странице вы хотите отключить кеширование: FYI: версия, над которой я работаю - 30.0

Ты можешь :

открыть панель инструментов веб-разработчика открытый веб-разработчик

и выберите отключить кэш

После этого он будет перезагружать страницу со своей собственной (вы находитесь), и каждая вещь будет повторяться, и каждый дополнительный запрос будет повторяться каждый раз, и вы можете держать веб-разработчика всегда открытым, чтобы следить и всегда держать его включенным (проверить) ,


8

Инструменты разработчика Firefox 48

Позволяет отключать кеш только при открытой панели инструментов, что идеально подходит для веб-разработки:

  • F12
  • коробка передач в правом верхнем углу
  • прокрутить вверх
  • установите флажок «Отключить кэш (когда панель инструментов открыта)»

введите описание изображения здесь

https://stackoverflow.com/a/27397425/895245 имеет похожий контент, но с тех пор позиционирование немного изменилось.


1
Спасибо ... есть информация (и в этой теме) о настройке network.http.use-cache в false ... но в моей версии FF (53) эта настройка больше не существует ... Этот метод намного лучше тем не мение.
Майк Грызун

7

Если вы работаете с кодом на стороне сервера, вы можете сгенерировать случайное число и добавить его в конец кода следующим образом ...

SRC = "yourJavascriptFile.js? randomNumber = 434534"

с randomNumber генерируется случайным образом каждый раз.


Это единственное решение, которое работает для меня, кроме очистки кэша браузера вручную каждый раз, когда я обновляюсь.
Кертис

4

Я знаю, что воскрешаю древний вопрос, но сегодня я пытался решить эту проблему и найти альтернативное решение. Переключение кеширования, когда я хочу протестировать, было не совсем приемлемо для меня, и, как уже упоминалось, жесткое обновление (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

Это заставляет браузеры моих клиентов обновлять свой локальный кеш, когда они видят новую строку запроса, но затем кэширует новую копию, пока файл не обновится снова


3

Лучшая стратегия состоит в том, чтобы спроектировать ваш сайт так, чтобы он создавал уникальный URL-адрес для ваших файлов JS, который сбрасывается при каждом изменении. Таким образом, он кэшируется, когда не было никаких изменений, но немедленно перезагружается, когда происходит любое изменение.

Вам нужно будет приспособиться к конкретным инструментам среды, но если вы используете PHP / Apache, это отличное решение как для вас, так и для конечных пользователей.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/


3

Вы можете использовать CTRL- F5для перезагрузки в обход кеша.

Вы можете установить настройки в Firefox, чтобы не использовать кеш

network.http.use-cache = false

Вы можете настроить свой веб-сервер так, чтобы он отправлял заголовки no-cache / Expires / Cache-Control для файлов js.

Вот пример веб-сервера Apache.


это shift-f5 или ctrl-f5?
Thilo

3

Если вы используете FireBug, в раскрывающемся меню вкладки «Сеть» есть опция отключить кеш браузера.

введите описание изображения здесь


Firebug прекращен.
K7AAY

1

У последних двух опубликованных решений есть свои плюсы и минусы, но оба они ИМХО отличные решения.

  1. Вы можете или не хотите, чтобы ваш идентификатор сеанса был встроен в ваш URL-адрес, чтобы повысить безопасность. Но в разработке это не должно иметь значения, но что, если вы забудете удалить его? И это действительно работает? Разве вам не нужно что-то вроде генератора последовательных чисел (счетчик совпадений, сохраненный в сеансе, или, может быть, даже просто если 1, то 0, если 0, то 1)?

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

  3. Модификация файла vhost.conf или .htaccess делает свое дело без необходимости добавлять и удалять идентификатор сеанса. Но недостатком является то, что это повлияет на производительность всех ресурсов js и css, и если у вас большие файлы, это замедлит вас.

И то, и другое кажется отличным элегантным решением - зависит от ваших потребностей.


1

Я использую CTRL- SHIFT- DELETEкоторый активирует функцию конфиденциальности, позволяя вам очистить кэш, сбросить куки и т. Д., Все сразу. Вы даже можете настроить его так, чтобы он просто ДЕЛАЛ его, вместо того, чтобы открывать диалоговое окно с просьбой подтвердить.


1

В более поздних версиях Firefox, таких как Nightly, есть опция, называемая «отключить кеш», которую вы можете найти, нажав на кнопку. И эти параметры работают только в текущем сеансе, что означает, что когда вы закрываете инспектор и перезапускаете его, вы должны проверить его еще раз, если хотите, чтобы перехват отключен.


Хотелось бы, чтобы был способ отключить кеш глобально. Это очень раздражает необходимость проверять это каждый раз, когда я открываю инспектора.
Карлос Гарсия

0

После 2 часов просмотра различных вариантов, это то, что сработало для меня.

Моим требованием было отключить кэширование файлов js и css в моем защищенном веб-приложении. Но в то же время кэшируем эти файлы «внутри» определенного сеанса.

Передача уникального идентификатора с каждым запросом является одним из рекомендуемых подходов.

И вот что я сделал: - Вместо

<script language="javascript" src="js/home.js"></script>

я использовал

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Любые минусы вышеупомянутого подхода приветствуются. Проблемы с безопасностью ?


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).


0

Прежде всего, это может быть легко сделано, например, с помощью PHP, чтобы заставить браузер обновлять файлы, основываясь на дате кэша (времени истечения). Если вам это просто нужно для экспериментов, попробуйте использовать Ctrl + Shift + Del, чтобы очистить весь кэш сразу в браузере Firefox. Третье решение состоит в том, чтобы использовать множество надстроек, которые выходят из Firefox, чтобы очистить кеш на основе временных линий.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.