Кеширане на HTTP съдържание от страна на клиента (в браузъра)

съдържание

Когато информацията е изпратена до клиент по интернет, клиентът – обикновено браузър – може дада я кешира локално.

Локалният кеш намалява изискванията за честотна лента и подобрява производителността. Тъй като повечето, ако не и цялото, съдържание в Интернет се променя сравнително рядко в контекста на една потребителска сесия, кеширането се превърна в незамениминструмент за производителност. Единственото изискване, свързано с кеширането, е много просто: имате нужда отизвестие за промяна. Почти всеки уеб разработчик се е сблъсквал със ситуация, в която променя информацията на уеб сървъра, но когато я актуализира в браузъра, старото съдържание остава в него. Това е пример за класически проблем с кеширането.

Има два стандартни подхода за решаване на този проблем, включително използването наHTTP заглавки. Първият метод проверява за най-новите модификации спрямо клеймото за време на документа, докато вторият метод проверява за промени в етикета на обекта (E-Tag), свързан с искания ресурс.

страна

Кеширането може също да се контролира или модифицира с помощта на заглавкитеHTTP Cache-Control и Pragma. Те обикновено се използват в ситуации, в които искате да посочите, че определендокумент не трябва да се кешира на клиента.

Заглавката Pragma се използва от HTTP 1.0 и е придружена от стойност No-cache за деактивиране на кеширането, както е показано по-долу:

Ако използватеHTTP 1.1, ще искате да използвате заглавкатаCache-Control, която замениPragma. Следното е еквивалентът на предишния израз

класическиHTTP 1.0 кеширането се контролира с помощта на заглавката If-Modified-Since в заявката GET. С този подход клиентът каза на сървъра, че трябва да изпраща данни за посочения URL адрес само ако е бил променен след изтичането на указаното време в заглавката. Ако документът не е бил променен, е изпратен код за състояние 304 (непроменен).

В допълнение към заглавката If-Modified-Since има и заглавка If-Unmodified-Since. Тази заглавка казва на сървъра да изпраща данни само ако не са се променили от посочената дата.

HTTP 1.1 въведе нов подход за управление на кеширането,E-Tag.

E-Tag еуникален идентификатор, свързан с определен документ и изчислен от неговото съдържание. Ако мислите заE-Tag катоMD5 хеш на съдържанието на документ, тогава имате добра представа за него (всъщност MD5 хеширането е един от начините за изчисляване на E-Tag на документ). Идеята е, че ако документът се е променил, тогава неговият E-Tag също се е променил. Това опростява проверката - трябва да проверите само стойността наE-Tag, а неURL заедно с датата на промяна.

Също така, ако работите сдинамични документи, те често няматпоследна модифицирана дата, което дава още една причина да използватеE-Tag за контрол на кеширането.

Ако програмирате в PHP, трябва да използвате функциятаheader(), за да изпратите подходящия E-Tag, както е показано в примера по-долу:

Припрограмиране на ниво клиент, заглавкитеIf-Match илиIf-None-Matc h се използват запроверка на конкретенE-Tag.

кеширане

Ако ви е харесала тази статия, моля, щракнете върху бутона за харесване (намира се по-долу) - така че другите хора да знаят за него.Ще съм ви много благодарна! Благодаря!