Веб Дизайн - статьи




Проблема кнопки "Back" и проблема кнопки "Refresh" - часть 2


Они выглядят как символ "?" с какой - либо строчкой после него. Метод POST этого не делает, посылая серверу данные немного другим образом. Есть и ещё одно отличие, о нем ниже.



  • Браузер показывает пользователю страницу и ещё запоминает её, чтобы в следующий раз не повторять весь ресурсоемкий процесс общения с сервером заново. Это называется "кешированием" страницы (от англ. слова cache, означающего память, в которой программы, например, браузеры, хранят информацию для повторного применения). Впрочем, сервер может вместе со страницей передать браузеру "просьбу" - не кешировать. Ответы от сервера, полученные методом POST, не кешируются, если сервер явно не "попросил" браузер кешировать. То же самое относится к страницам с адресом, который содержит символ "?" с параметрами после него.

    Ответы, полученные методом GET, напротив, кешируются по умолчанию.

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

    Существует индустриальный стандарт - rfc 2616 , который определяет, как производители браузеров должны реализовывать функциональность, в том числе и функциональность кнопки "Back". Функциональность кнопки "Refresh" не очерчена в спецификации прямо, но к ней имеют отношение разделы, посвященные кешированию (Параграфы 13.1 – 13.12 ).

    При нажатии кнопки "Back" браузер должен показывать в точности ту страницу, которую пользователь уже просматривал ранее (rfc 2616, параграф 13.13) . Согласно спецификации, браузер в ответ на нажатие кнопки "Back" не должен делать запрос к скрипту, а вместо этого должен показать пользователю страницу, которую браузер "запомнил" в кеш-памяти. В таких случаях, страница, которую пользователь увидел по нажатию кнопки "Back", будет не такой, какую ему выдал бы скрипт с сервера.





    Содержание  Назад  Вперед