Управление кешем браузера - PullRequest
2 голосов
/ 28 июля 2010

Разрабатываемое мной веб-приложение использует множество асинхронно загружаемых изображений, которые часто изменяются с течением времени, пока их URL-адреса сохраняются. Есть несколько проблем с этим:

  1. Если я не предоставлю изображения с явно отключенным кэшированием в заголовках HTTP, пользователь часто будет получать устаревшую версию изображения, но это существенно увеличивает нагрузку на сервер.
    Как я могу убрать управление кэшем из браузера и вручную оценить, следует ли мне использовать кэшированное изображение или перезагрузить его с сервера?

  2. Поскольку необходимо загрузить множество отдельных образов, я также распараллеливаю загрузку образов по разным именам хостов (то есть image01.example.com, image02.example.com, но все эти имена хостов разрешаются на одном физическом сервере). Поскольку NN имени хоста генерируется случайным образом, я также получаю пропуски в кеше, где я мог бы получить обновленное изображение из кеша браузера. Должен ли я отказаться от этой практики и заменить ее чем-то другим?

  3. Какие методы контроля кэша и дополнительные материалы для чтения вы бы порекомендовали использовать?

1 Ответ

2 голосов
/ 28 июля 2010
  1. Для принудительной загрузки добавьте бессмысленный параметр в URL

     <img src='http://whatever/foo.png?x=random'>
    

    где "random" будет что-то вроде отметки времени в миллисекундах. Теперь, если вы хотите, чтобы изображение было перезагружено, только если оно было изменено, тогда вы должны убедиться, что ваш сервер устанавливает значения «Etag» для изображений, и что он использует соответствующий срок действия и заголовки «если изменено после» , В конечном счете, вы не можете забрать управление кешем из браузера любым другим способом, кроме заголовков HTTP.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...