Можно ли узнать, находится ли файл в кеше браузера пользователя? - PullRequest
3 голосов
/ 29 октября 2010

Я делаю что-то вроде этого: если изображение кэшируется на компьютере пользователя и его временная метка совпадает с временной отметкой на сервере, то отобразите кэшированную версию; в противном случае НЕ загружайте изображение с сервера.

Полагаю, что JavaScript может сделать это, поэтому я отметил этот пост как javascript. Если это неправильно, пожалуйста, помогите мне пометить его.

Редактировать: Здесь я приведу более подробную информацию о том, что я собираюсь реализовать. Я работаю над чем-то вроде веб-обозревателя файлов, где миниатюры загружаются, только если пользователь нажимает кнопку «Просмотр миниатюр» рядом с каждым изображением. Если миниатюра уже кэширована, используйте кэшированную версию; в противном случае покажите значок общего изображения.

Ответы [ 5 ]

1 голос
/ 29 октября 2010

Мой RSS-ридер, для каналов, которые имеют много сообщений, загружает полную страницу сообщений.Количество записей зависит от размера фактического окна.Когда я прокручиваю до конца списка, если есть еще сообщения, он загружает другую страницу.

Будет ли это применимо к вашему файловому обозревателю?Это будет означать, что пользователь всегда будет загружать двадцать миниатюр, но никогда больше, если в этом нет необходимости.Я никогда не использовал файловый менеджер, который требовал от меня щелчка мышью для просмотра эскиза.

1 голос
/ 29 октября 2010

Мне это кажется немного странным.

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

Так что, если изображение не находится в кэше моего браузера, которого при моем первом посещении не будет, то я получу значок общего изображения. При моем следующем посещении изображение все еще не будет в моем кэше, поэтому я снова получу значок общего изображения. Так как же я когда-нибудь увижу что-либо, кроме значка общего изображения?

Теперь перейдем к решению, которое, как я признаю, не соответствует вашим требованиям, но это типичная реализация для этого типа программного обеспечения.

  1. Показать файлы с параметром «Показать миниатюру»
  2. Когда выбран параметр «Показать миниатюру», загрузите миниатюру с сервера (обратите внимание, что довольно часто сценарий будет обслуживать изображение с измененным размером, которое также может храниться на сервере, чтобы избежать необходимости повторной обработки изменения размера для определенное количество времени)
  3. Браузер автоматически кэширует изображение и предотвращает дальнейшие запросы сервера на время
0 голосов
/ 29 октября 2010

Не могли бы вы просто переместить / удалить / переименовать его на сервере?А затем обработайте испорченное изображение с помощью javascript Image.onError , чтобы скрыть тег испорченного изображения для людей, у которых нет кэшированного изображения.те, у кого это есть в их братской цепочке.Остальные люди ничего не увидят

0 голосов
/ 29 октября 2010

Браузер может отправлять заголовки «If-Modified-Since» и «ETag», чтобы указать серверу, что у него есть версия ресурса. Проверьте W3 правила кэширования относительно этих заголовков.

Вы можете запросить эти заголовки на сервере, отправив обратно общий значок, если он не найден, и ответ «304 Не изменен», если найден.

0 голосов
/ 29 октября 2010

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

...