Как отключить кеширование в 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
TST
источник
как я не узнал об этом маленьком драгоценном камне? Все виды вкусностей в about: config!
ABrowne
2
network.http.use-cache для меня не существует. Изменение browser.cache.offline.enable не имеет значения для меня.
Кертис
1
Я не сомневаюсь, что это хороший ответ, но, похоже, он больше не соответствует истине в последних сборках Firefox (сейчас я использую версию для разработчиков 47.0a2). Отключение кеширования в настройках веб-разработчика мне эффективно.
JosephStyons
61

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

philnash
источник
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 имеет возможность отключить кэш браузера в раскрывающемся меню вкладки «Сеть».

kynan
источник
8

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

Ты можешь :

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

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

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

Shareef
источник
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 генерируется случайным образом каждый раз.

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

scunliffe
источник
3

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

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

network.http.use-cache = false

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

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

похлопывание
источник
это shift-f5 или ctrl-f5?
Thilo
3

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

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

Nerdroid
источник
Firebug прекращен.
K7AAY
1

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

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

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

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

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

Мим
источник
1

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

Мистер Блестящий и Новый 安 宇
источник
1

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

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

Амир Горбани
источник