Действительно ли это - имя файла или целый URL, используемый в качестве ключа в кэшах браузера?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

19
задан Greg Dubicki 17 August 2015 в 15:27
поделиться

8 ответов

Да, любое изменение в любая часть URL (исключая HTTP и изменения протоколов HTTPS) интерпретируется как другой ресурс браузером (и любые посреднические прокси) и таким образом приведет к отдельному объекту в кэше браузера.

Обновление:

требование в эта статья ThinkVitamin, с которой Opera и браузеры Safari/Webkit не кэшируют URL? query=strings ложь .

Добавление параметра номера версии к URL является совершенно приемлемым способом сделать слом кэша.

то, Что, возможно, смутило автора статьи ThinkVitamin, является тем, что удар Входит в адрес/адресную панель в Safari и результаты Opera в другом поведении для URL со строкой запроса в них.

Однако ( и это - важная часть! ) Opera и Safari ведут себя точно так же, как IE и Firefox когда дело доходит до кэширования встроили/связали изображения и таблицы стилей и сценарии в веб-страницах - независимо от того, имеют ли они"?" символы в их URL. (Это может быть проверено с простым тестом на нормальном сервере Apache.)

(я прокомментировал бы в настоящее время принимаемый ответ, если у меня была репутация, чтобы сделать это. :-)

39
ответ дан 30 November 2019 в 03:08
поделиться

Я на 99,99999% уверен, что это - весь URL, который привык к ресурсам кэша в браузере, таким образом, Ваша схема URL должна удаться прекрасный.

2
ответ дан 30 November 2019 в 03:08
поделиться

МИНИМУМ необходимо определить объект HTTP, полным путем, включая любые параметры строки запроса. Некоторые браузеры не могут кэшировать объекты со строкой запроса, но это не имеет никакого отношения к ключу к кэшу.

также важно помнить, что путь больше не достаточен. Варьирование: заголовок в ответе HTTP предупреждает браузер (или прокси-сервер, и т.д.) чего-либо Кроме URL, который должен использоваться для определения ключа кэша, такого как cookie, кодовые значения, и т.д.

К основному вопросу, да, изменение URL .js файла является sufficent. К большему вопросу того, что определяет ключ кэша, это - URL плюс Варьирование: ограничения заголовка.

1
ответ дан 30 November 2019 в 03:08
поделиться

Да. Другой путь является тем же с точки зрения кэшей.

0
ответ дан 30 November 2019 в 03:08
поделиться

Конечно, это должно использовать целый путь '/r20/example.js' 'по сравнению с '/r21/example.js'', могли быть совершенно другие изображения для начала. То, что Вы предлагаете, является жизнеспособным способом обработать управление версиями.

0
ответ дан 30 November 2019 в 03:08
поделиться

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

-1
ответ дан 30 November 2019 в 03:08
поделиться

Весь URL. Я видел странное поведение в нескольких более старых браузерах, где чувствительность к регистру сыграла роль.

0
ответ дан 30 November 2019 в 03:08
поделиться

зависит. это, как предполагается, полный URL, но некоторые браузеры (Opera, Safari2) применяют другую стратегию кэша URL с различными параметрическими усилителями.

лучший выбор состоит в том, чтобы изменить имя файла .

существует очень умное решение здесь (использует PHP, Apache)

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

примечания к Стратегии: “According буква спецификации кэширования HTTP, агенты пользователя никогда не должны кэшировать URL со строками запроса. В то время как Internet Explorer и Firefox игнорируют это, Opera и Safari don’t - чтобы удостовериться, что все агенты пользователя могут кэшировать Ваши ресурсы, мы должны не допустить строки запроса в их URL. ”

http://www.thinkvitamin.com/features/webapps/serving-javascript-fast

-1
ответ дан 30 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: