У меня есть веб-страница с ресурсом по постоянно меняющемуся адресу. Например, веб-страница может быть по адресу http_: //www.mysite.com/? Page = page1 и может содержать изображение http_: //www.mysite.com/? Img = image999. Хотя оба ресурса находятся на моем сайте, я не контролирую размещение определенных изображений на определенных страницах.
Я установил заголовки для длительного кэширования на страницах, а также на изображениях. Но в случае, если пользовательский агент кэширует только веб-страницы, а не изображения (или, например, пользователь очищает кэш, а изображение очищается из кеша), пользовательский агент извлекает страницу из кеша и делает запрос для /? Img = image999. Однако в этот момент изображение больше не находится в /? Image = image999, а вместо этого, скажем, /? Image = image998. Таким образом, изображение не будет отображаться пользователю.
Каково решение этой проблемы? Вот те, о которых я мог подумать: -
- Отключить кэширование как веб-страниц, так и изображений. Худшее решение.
- Отключить кэширование только веб-страниц. Лучшее решение.
- Помните, что на стороне сервера image998 был когда-то на image999, и если поступает запрос для /? Image = image999, перенаправьте / перенесите его в /? Image = image998. Лучшее решение, но боль для реализации. РЕДАКТИРОВАТЬ: На самом деле, теперь я понимаю, что это невозможно в моей ситуации sadface
Моя проблема связана не с изображениями, а с видео HTML5. В частности, в Google Chrome я заметил, что видео, похоже, удаляется из кеша довольно часто, хотя я устанавливаю срок годности в кеше. Но я все еще заинтересован в решении общих ресурсов независимо от политики кэширования Chrome.
РЕДАКТИРОВАТЬ: Чтобы подтвердить, я использую "dont revalidate" + "истекает через 1 год" кеширования как на веб-странице, так и на изображении. Таким образом, если агент UA запрашивает веб-страницу (page1) + изображение (image999) один раз, он не попадет на сервер для последующих запросов, и все в порядке. Проблема возникает, когда изображение выпадает из кэша UA, но веб-страница остается. В этой ситуации агент UA не запрашивает сервер для веб-страницы, а запрашивает сервер для изображения (image999). Однако тем временем изображение изменило URL-адреса (image999 -> image998), и сервер вернет 404. В результате UA не будет отображать изображение. Как мне это предотвратить?