2009-02-11 3 views
13

Как проверить файл javascript в кеше пользователя. Если он обновил страницу или посетил сайт после некоторого времени. Мне не нужно снова загружать этот файл js. Удаляет ли файлы js после закрытия сайта.Проверка кеша браузера для файла js

+0

Этот вопрос глубоко смущен до точки бесполезности, и я понятия не имею, почему у него появились обороты. Сначала вы говорите, не объясняя почему, что вы хотите проверить, есть ли в кеше файл (который возможен, но только через тайминг-атаки, для него нет API). Затем вы говорите, что хотите знать это, чтобы избежать загрузки файла снова, но браузер * обрабатывает эту логику для вас *, если вы дадите ему правильные заголовки, поэтому эта мотивация кажется нецелесообразной. Наконец, вы задаете еще один несвязанный и неясный вопрос о том, что файлы js «очищаются» после того, как сайт «закрыт». А? –

+0

@MarkAmery вы можете указать, что «проверка времени атаки» объясняет? – setec

+1

@setec Вот академическая статья об этом от 15 лет назад: http://sip.cs.princeton.edu/pub/webtiming.pdf. С тех пор он не был исправлен, несмотря на то, что он был дырой в частной жизни. Версия tl; dr: сделать тег '' с атрибутами 'onload' и' onerror', указывающими на интересующий вас URL, и использовать JavaScript во времени, сколько времени потребуется для вызова одного из обработчиков. Если это составляет пару миллисекунд, пользователь кэшировал целевой URL. –

ответ

11

Независимо от того, загружен ли файл javascript, зависит от того, как настроен ваш веб-сервер, как настроен пользовательский браузер, а также как настроены любые прокси-серверы HTTP между вашим сервером и пользователем. Единственный бит, который вы можете контролировать, - это настройка вашего сервера.

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

Вот несколько ссылок, которые могут помочь:

Apache - http://httpd.apache.org/docs/2.0/mod/mod_expires.html

IIS - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0fc16fe7-be45-4033-a5aa-d7fda3c993ff.mspx?mfr=true

4

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

Посмотрите на различные кэширования HTTP заголовки, такие как:

  • Last-Modified
  • Истекает
  • ETag

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

2

Браузер позаботится о кэшировании для вас.

Когда кеш опустел, частично зависит от настроек браузера и частично от отправляемых вами заголовков. Если вы установите заголовок Expires, браузер не должен повторно запрашивать файл до истечения срока его действия. Чтение около HTTP Headers может вам помочь.

Смежные вопросы