Въведение в HTTP кеширането

Сигурен съм, че сте забелязали, че когато отворите уебсайт за първи път, е необходимо известно време да се зареди. Когато обаче го отворите отново след известно време, сайтът се затваря много по-бързо. Представете си, ако сайтът отне едно и също време всеки път, колко бавно сърфиране ще се чувства. Е, всичко това е благодарение на изящната идея, наречена HTTP Caching. Нека да разгледаме какво е, как работи и как се използва, за да превърне браузъра в Интернет по-бързо.

Какво е HTTP кеширане?

HTTP кеширането е идеята за съхраняване на някои често използвани или често използвани данни на някое място, което е бързо достъпно. С това има много добър шанс, че най-необходимите данни могат да бъдат достъпни много по-бързо, защото компютърът не трябва да достига твърде далеч, за да го получи.

В случай на уеб сърфиране, кеширането се счита, когато вашият уеб браузър като Chrome съхранява копие на уебсайт или уеб приложение в локалното хранилище. След като уебсайтът е кеширан, уеб браузърът няма да трябва да презареди всички данни от сървъра и това ще направи браузването много по-бързо.

Например, след като се изтегли CSS файл на уебсайт, браузърът не трябва да го изтегля за всяка страница от сесията. Същото може да се каже за много JavaScript файлове, изображения (като лого на сайта и икони на социални медии) и дори за някакво динамично съдържание. Кеширането е активирано чрез използване на заглавия на кеш.

Кешови заглавки в HTTP

HTTP кеширането има две основни кешови заглавия, първата се нарича „Кеш контрол“, а втората се нарича „Изтичане“. Нека да разгледаме и двете:

Cache-Control

Можете да разгледате Cache-Control като превключвател, за да включите кеширането в браузъра на потребителя. След като това заглавие е добавено, той позволява кеширане за всички поддържани уеб браузъри. Ако това заглавие не присъства, никой браузър няма да поддържа кеш на съдържанието на уеб страниците, дори ако той поддържа кеширане.

Кеш-контролът има два типа настройки за поверителност, първият е публичен, а вторият - частен.

В случай на Public, ресурсите могат да се кешират от всеки междинен прокси сървър като мрежи за доставка на съдържание (CDN).

Заглавката на Cache-Control с частен отговор ще каже на браузъра, че кеширането ще се извършва само за един потребител, а не за междинен прокси.

Стойността „max-age“ в заглавката Cache-Control задава времето, за което съдържанието ще бъде кеш. Това време е за секунди.

Cache-Control:public, max-age=31536000

Изтича

Заглавката Expires се използва, когато в кода присъства Cache-Control. Това е проста заглавка на HTTP кеш, която определя дата, от която всеки кеш ресурс се счита за невалиден. След като кешът изтече и потребителят зареди уебсайта, уеб браузърът просто ще поиска цялото съдържание на страницата отново.

Условни заявки

По-горе обсъдените заглавки просто казват на браузъра кога да извлече данните от уеб сървъра. Условните заявки, от друга страна, казват на браузъра как да го извлече. Условните заявки казват на браузъра как може да попита сървъра, ако копието на данните в кеша е остаряло.

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

Заявки, базирани на времето

При заявки, базирани на време, се проверява дали исканият ресурс е променен на сървъра или не. Ако кешираното копие в браузъра е най-новото, тогава сървърът ще върне код 304.

За да зададете условната заявка на време, можете да използвате „Последно променен“ в заглавката на отговора.

Cache-Control:public, max-age=25998579
Last-Modified: Fri, 08 Jul 2018 15:25:00 GMT

Съдържателно-базирани

В заявките, базирани на съдържание, MD5 Hash (или всяка друга жизнеспособна опция) се проверява както за копиране на сървъра, така и за кеш. Това показва дали данните са същите или не, в случай че данните са различни, контролната сума на MD5 няма да съвпада и сървърът ще изпрати ново копие на ресурси.

Това става чрез „ETag“ в заглавката. Стойността на него е дайджестът на ресурси.

Cache-Control:public, max-age=25998579
ETag: "496d7131f15f0fff99ed5aae”

видимост

Почти всички съвременни браузъри включват някои инструменти, свързани с развитието, които ви позволяват да проверявате ресурси, изходен код и други аспекти на уеб страница. Сред тях можете да намерите инструмент, за да видите заглавките, върнати от всяко приложение.

В Google Chrome, за да видите тези заглавия, можете да щракнете с десния бутон върху всеки празен участък на уеб страница и да кликнете върху „Проверка“ или да натиснете CTRL + SHIFT + I, за да отворите DevTools. В този инструмент щракнете върху раздела Мрежа и натиснете CRTL + R, за да презаредите, за да видите всички заглавки на страницата.

Използвайте случаи в HTTP кеширане

По-долу са някои случаи на използване на HTTP кеширане, които са както следва:

За статични активи

За статични активи на страница като изображения, JS файлове и всички CSS файлове, можете да изберете да кеширате съдържанието агресивно. Ако не се налага да зареждате тези файлове, това ще доведе до впечатляващо подобрение на производителността. За този случай използвайте Cache-Control Header с максимална стойност на възрастта повече от месец или дори година.

Cache-Control:public; max-age=31536000

За динамично съдържание

В случай на динамично съдържание на дадена страница, ще трябва сами да помислите кои файлове трябва да се кешират в браузъра и за колко време. В случай че съдържанието ще се променя често, ще трябва да сте сигурни, че продължителността на времето, което изберете за кеширане, няма да доведе до проблем за потребителя.

Кеширане на частно съдържание

Както обсъждахме в раздела Cache-Control, в случай че съдържанието на страницата е частно по своя характер, можете да предотвратите кеширането й от междинни прокси сървъри като CDN, като добавите в заглавката „Cache-Control: private“.

Друг по-безопасен подход е изобщо да не кеширате частно съдържание.

Изпълнение на HTTP кеширане

След като знаете какво представлява HTTP кеширането и как работи, нека разгледаме как можете да го внедрите на вашия уебсайт. Внедряването на HTTP кеширане е малко по-различно за различните типове сървъри. В нашия случай нека да разгледаме как да реализираме кеширане чрез .htaccess файла.

За да активирате кеширането на сайта, можете да добавите заглавките във .htaccess файла на вашия сървър, например:

FilesMatch "\.(ico|pdf|flv|jpg.webp|jpeg.webp|png|gif|js|css|swf)$"
Header set Cache-Control "max-age=31536000, public"
/FilesMatch

Горепосоченото ще кешира всички, pdf, flv, jpg.webp и други споменати формати, споменати в „File Match“ за една година.

заключение

HTTP кеширането е един от най-важните трикове, които превръщат сърфирането в сайта ви по-бързо изживяване за посетителите ви и сега, когато можете да видите как работи, можете да го внедрите на вашите сайтове и уеб приложения, за да ги ускорите за вашите потребители и за запазване на пропускателната способност на вашия сървър.

Препоръчителни статии

Това е ръководство за HTTP кеширане. Тук обсъдихме внедряването, Условните заявки, заглавната част на кеша и случаите на използване на HTTP. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Научете какво е HTML
  2. Как да инсталирате Github?
  3. Какво представлява MapReduce в Hadoop?
  4. Ръководство за начинаещи за командите на възлите
  5. HTTP бисквитки | Сигурност