Назад | Перейти на главную страницу

Почему Firefox по-прежнему устанавливает соединения с сервером, хотя ресурсы HTTP отображаются как «кэшированные»?

Меня смущает то, как Firefox показывает загруженные ресурсы как cached но затем я вижу, что браузер выдает новый DNS-запрос для имени домена и снова обращается к HTTP-серверу.

Ниже приведен простой пример такого поведения. я навестил https://example.com затем перезагрузите веб-страницу. Как и ожидалось, загруженные ресурсы показаны как cached. Но в то же время я запускаю tcpdump в фоновом режиме и замечаю, что браузер выдает DNS-запрос для example.com снова и также подключается к HTTP-серверу после получения ответа DNS.

Это ожидаемое поведение или я что-то упускаю? Спасибо, что прочитали мой вопрос <3

Firefox кэшировал ваш объект и повторная проверка объект с исходным сервером. Вы можете сказать это, потому что он отправил If-Modified-Since: и Cache-Control: заголовки запросов.

Firefox обычно повторно проверяет кэшированные объекты в двух случаях:

  1. Кэшированный объект устарел, как определено Cache-Control: и Expires: заголовки ответов, которые были отправлены с объектом, когда он был ранее кэширован.
  2. Вы нажимаете "Перезагрузить".

Вы можете видеть, что веб-сервер отправил 304 Not Modified ответ, и, таким образом, Firefox обслужил существующий кэшированный объект.


Кэширование HTTP может быть довольно сложным. Чтобы узнать все об этом, проведите вечер за изучением RFC 7234.