В началото на уеб, когато уеб сайтовете са представлявали само HTML файлове, с повече текст и малко изображения, скоростта на зареждане на уеб страниците все още не е била основен фактор за доброто потребителско изживяване.
Когато обаче скоростите за достъп до интернет се увеличават и отделно от това уеб става динамичен, тоест сайтовете започват да предлагат динамично генерирана информация, скоростта на зареждане започва пряко да влияе на доброто интерактивно изживяване на потребителите. Освен HTML файлове уеб сървърите се натоварват да работят със скриптови езици, които пък работят в близко сътрудничество с бази от данни. Размерът и сложността на уеб информацията се увеличава, което довежда до забавяне 🐌 в зареждането на страниците.
За да се зареди само една страница от динамичен сайт, се извършва интензивна работа от страна на сървъра. Стартират се скриптове, които обработват данни, изпълняват се SQL заявки към базата данни и различни други процеси само за да се генерира информацията, която уеб потребителят очаква.
Кеширане на информация в уеб (Web cache)
Думата „кеш“ идва от „cache“ на английски, което преведено буквално означава „складирам, скривам“. А Web cache означава складиране на уеб информация.
Въпреки че информацията в уеб страниците вече се генерира динамично, тя не се променя всяка секунда. Това означава, че една и съща информация се предоставя на всички потребители, но за всеки един от тях ще се генерира наново. Този процес на динамично генериране на една и съща информация се извършва постоянно, при всяко достъпване. Това довежда до излишно използване на ресурси 🍩 като време, процесорен ресурс, памет и други.
Заради тази ситуация на разхищение на ресурси и време, което пряко засяга времето на зареждане на уеб сайта, се създават технологии за складиране на вече веднъж генерираната информация. След като информацията, генерирана по динамичен начин, е записана (кеширана), тя представлява статично съдържание. То се предоставя директно на потребителите без генериране, изчакване и забавяне.
Кеширането на информация за следваща употреба е ефективен метод за ускоряване на зареждането на динамичен сайт. Когато се приложи и компресиране на тази записана информация, свалянето й от уеб потребителя се ускорява 🚀 още повече.
Кеширане и компресиране в Уеб:
- Намалява времето на изчакване;
- Намалява мрежовия трафик; намалява количеството информация предавано по мрежата;
- Намалява процесорното потребление и натоварване на уеб сървъра;
- Помага за по-бърз достъп и по-бързо зареждане на уеб ресурсите.
Системи за кеширане и ускоряване в уеб
Системите за ускоряване в уеб (още наричани уеб ускорители – web accelerators) ползват кеширане на информацията, като част от цялостната им функция. Освен кеширане, тези системи за ускоряване може да прилагат компресиране, филтриране, предварително изтегляне на ресурси и други.
Кеширане на уеб информация може да се случи на три различни нива:
- 1. Локално при уеб потребителя: Browser Cache;
- 2. На ниво уеб сървър: Reverse Proxy/Web Accelerator (преди сървъра-източник на уеб съдържанието);
- 3. На ниво приложение: Memcahed/Redis (на самия сървър-източник).
1. Browser Cache (локален кеш)
Уеб браузърът на потребителя може да кешира обекти от уеб сайтовете като изображения, скриптове, страници и други. Когато се достъпи дадена уеб страница, уеб браузърът първо ще провери дали обектите на тази страница вече не съществуват в кеша. Ако обектите са записани и все още са актуални браузърът ще ги зареди от кеша, вместо да се свързва уеб сървъра. Зареждането на данни от кеша на уеб браузъра е много по-бързо, отколкото изтеглянето им от уеб сървъра. Понякога, след извършване на промени по даден уеб сайт, за да се види актуалната информация в сайта, може да е необходимо да се изчисти кешираната информация в уеб браузъра.
2. Кеширане на ниво уеб сървър
Тези технологии се намират и работят пред реалния уеб сървър, който обслужва сайта, а най-честата имплементация е чрез Reverse Proxy.
Търсената страница не е налична в кеша (Cache miss-червено)
(1) Уеб браузърът изпраща заявка до сървъра, отговарящ за търсения домейн, за уеб ресурса page.html, заявката се прихваща от прокси сървъра;
(2) Прокси сървърът проверява в кеша за търсената страница и не я намира. Този пропуск може да се нарече Cache miss.
(3) Прокси сървърът изпраща запитване за ресурса до сървъра-източник.
(4) Сървърът-източник връща на проксито търсената уеб страница.
(5) Прокси сървърът получава, копира уеб ресурса и го изпраща към уеб клиента.
(6) Уеб браузърът получава търсения уеб ресурс.
Търсената страница е налична в кеша (Cache hit-зелено)
(A) Уеб браузърът изпраща заявка за уеб ресурса page.html до сървъра, отговарящ за търсения домейн и заявката е прихваната от прокси сървъра (тъй като той се намира пред сървъра-източник).
(B) Прокси сървърът проверява в кеша за търсената страница и я намира – Cache hit. Директно предоставя уеб ресурса към уеб клиента, като този път не се обръща към сървъра-източник.
Reverse Proxy (обратно прокси) е тип прокси сървър (посредник между уеб клиент и уеб сървър) и една от функциите, които може да изпълнява е кеширане. Reverse Proxy може да се постави пред уеб сървъра, като потребителите се свързват с прокси сървъра, вместо директно с уеб сървъра.
Някои от благоприятните функции, които Reverse Proxy може да изпълнява са:
- намаляване на натоварването на уеб сървъра, чрез ефективно кеширане на статично и динамично съдържание (web accelerator);
- намаляване на времето за достъп до уеб сайта;
- разпределяне на натоварването, в случай че зад прокси сървърът има повече от един уеб сървър;
- защита от общи уеб базирани атаки;
- компресиране на съдържанието, за по-бързо зареждане на уеб сайта.
Приложения, които са уеб ускорители и може да се ползват за Reverse Proxy кеширане: Varnish, Squid, Apache Traffic Server, Nginx и други.
Услуги, при които можете да ползвате тези технологии: VPS.
Към услугите на СуперХостинг.БГ е наличен уеб ускорителят SuperCache. Можете да го активирате за план СуперХостинг и всички Managed VPS планове. Активирането на уеб ускорителя се извършва през супер-инструмента SuperCache в cPanel.
При виртуалните сървъри можете да използвате всяка система за кеширане и техника за ускоряване, която е съвместима с платформата, настройките и целите на уеб проекта.
При виртуалните сървъри можете да използвате всякакви системи и техники за оптимизиране и ускоряване на уеб проектите. Освен VPS-а, на който се намира вашият сайт, можете да създадете допълнителни VPS-и, които да служат за определена ускоряваща, кешираща цел. Можете да създавате Load Balancer-и (баланс на натоварването), да инсталирате уеб ускорители и прокси кеширащи сървъри. Тези оптимизационни похвати могат да стоят пред основния виртуален сървър, да балансират натоварването и да ускоряват достъпа и зареждането на уеб проекта.
3. Кеширане на ниво приложение
Това са технологии, които най-често се намират и работят на същия сървър, на който се намира сайтът.
Съществуват различни системи и технологии за кеширане на ниво приложение. Например Memcached и Redis са технологии за кеширане на данните от сайта (page cache, database cache, object cache). OPCache е технология за opcode кеширане, която ускорява достъпа до PHP кода и изпълнението му.
Услуги, при които можете да ползвате Memcached, Redis, OPCache: споделен хостинг, Managed VPS и VPS.
Кеширането на информация е изпитан метод за оптимизиране на скоростта на уеб приложенията, но не е единствен. Само този метод не е достатъчен, когато на по-ниско ниво има нужда да се приложат други оптимизации.
Reverse Proxy похватът за кеширане на информация работи само при трафик към сайта, генериран от анонимни потребители. Когато сайтът се достъпи от потребител, който се е логнал в системата, кеширане на информацията не се прилага.
Интересно: Освен посочените технологии и системи за кеширане на информация, чиято главна цел е ускоряване на уеб приложенията и достъпа до тях, в интернет има и други видове кеширане. Например търсачката на Google също кешира уеб информация. За всеки уеб сайт, който е посетен от бота на Google, се създава кеширана версия. Това кеширане е особено полезно, в случай че даден сайт е временно недостъпен, през кеша все пак ще може да се зареди.
Има и специфични системи, които създават и поддържат уеб архив на уеб сайтовете като The Internet Archive.
Още кеширане: DNS кеш сървъри. DNS информацията на даден домейн се записва в DNS сървърите на интернет доставчиците. Така че при последващо достъпване на този домейн се използва кешираната DNS информация, вместо да се питат DNS root сървърите.
Абонирайте се за СуперБлога, за да научавате първи най-важното и полезното от света на уеб, касаещо Вашия сайт и дигитално развитие.