Как браузер узнает, что веб-страница изменилась? - PullRequest
3 голосов
/ 07 декабря 2009

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

Вопрос: Как именно браузер узнает, что веб-страница изменилась?

Интуитивно я бы сказал, что F5 обновляет кеш для данной страницы, и этот кеш используется только для навигации по истории и имеет дату окончания срока действия - что заставляет меня думать, что браузер никогда не узнает, изменилась ли веб-страница, просто перезагружает страницу, если кеш ушел --- но я уверен, что это не всегда так.

Любые указатели оценены!

Ответы [ 4 ]

10 голосов
/ 07 декабря 2009
6 голосов
/ 07 декабря 2009

Браузеры обычно получают эту информацию через HTTP-заголовки, отправленные со страницей.

Например, заголовок Last-Modified сообщает браузеру, сколько лет странице. Браузер может отправить простой запрос HEAD на страницу, чтобы получить последнее измененное значение. Если он новее, чем у браузера в кеше, он может перезагрузить его.

Существует также множество других заголовков, связанных с кэшированием (например, Cache-Control). Проверить: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

2 голосов
/ 07 декабря 2009

Вы идете по правильному пути, и, как упоминал Джонатан, нет ничего лучше, чем читать документы. Однако, если вам нужна только дополнительная информация:

Существуют заголовки ответа HTTP, которые позволяют серверу установить кэшируемость страницы, которая попадает в вашу систему срока действия. Однако еще одна важная конструкция - это запрос HTTP HEAD, который по существу извлекает MIME-тип и Content-Length (если доступно) для данной страницы. Браузеры могут использовать запрос HEAD для проверки того, что находится в их кешах ...

Хотя по этой теме определенно больше информации, поэтому я бы посоветовал прочитать документы ...

2 голосов
/ 07 декабря 2009

Веб-браузеры отправляют HTTP-запросы и получают HTTP-ответы. Затем они отображают содержимое HTTP-ответов. Обычно ответы HTTP содержат HTML. И многим HTML-элементам могут потребоваться новые запросы для получения различных частей страницы. Например, каждое изображение обычно является другим HTTP-запросом.

Существуют заголовки HTTP, которые указывают, является ли страница новой или нет. Например, последняя измененная дата. Веб-браузеры обычно используют условный GET (поле условного заголовка) или HEAD запрос для обнаружения изменений. HEAD запрос получает только заголовки, а не фактический запрашиваемый ресурс.

Условный GET HTTP-запрос вернет состояние 304 Not Modified, если нет никаких изменений.

Страница может затем измениться в зависимости от:

  • Ввод пользователя
    • После ввода пользователя изменения могут произойти на основе кода JavaScript, работающего без обратной передачи
    • После ввода пользователя, новый запрос к серверу и получение совершенно новой (возможно, той же) страницы.
  • Javascript-код может запускаться, когда страница уже загружена, и что-то менять в любое время. Например, у вас может быть таймер, который что-то меняет на странице.
  • Некоторые страницы также содержат HTML-теги, которые будут прокручиваться, мигать или иметь другое поведение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...