Кеширането е решаваща техника в съвременната уеб разработка и управление на инфраструктурата, особено при работа с уебсайтове с висок трафик. Лак, високоефективен HTTP ускорител HTTP, предлага мощен начин за прилагане на кеширащи стратегии чрез неговия език за конфигуриране на лак (VCL). Като доставчик на лак, аз съм развълнуван да споделя някои поглед върху това как да приложа ефективни стратегии за кеширане в VALCH VCL.


Разбиране на основите на лак и VCL
Преди да се потопите в кеширащи стратегии, е от съществено значение да разберете какво са лак и VCL. LARNY е ускорител на уеб приложение с отворен код, често наричан обратен прокси кеш. Той седи между клиента и сървъра за произход, прихваща заявки и обслужване на кеширано съдържание, когато е възможно. Това значително намалява натоварването на сървъра на Origin и подобрява времето за реакция на потребителите.
VCL, от друга страна, е специфичен за домейна език, използван за конфигуриране на лак. Тя ви позволява да дефинирате как лакът трябва да се справи с входящите заявки, съдържанието на кеш и да взаимодейства със сървъра на Origin. VCL скриптите са организирани в подпрограми, всяка от които отговаря за определен етап в тръбопровода за обработка на заявки.
Настройване на основна стратегия за кеширане
Най -простата стратегия за кеширане в лак е да кеш всички получават заявки, които имат кешируем отговор от сървъра на Origin. Ето основна конфигурация на VCL за постигане на това:
VCL 4.0; Backend Default {.host = "your-origin-server.com"; .Port = "80"; } sub vcl_recv {if (req.method == "get") {return (hash); } else {return (pass); }} sub vcl_backend_response {if (beresp.status == 200) {set beresp.ttl = 3600s; // кеш за 1 час връщане (доставете); } else {return (pass); }}
ВVCL_RECVПодпрограма, проверяваме дали методът на заявка е получен. Ако е така, изпращаме заявката до процеса на кеширане (хеш). В противен случай предаваме заявката директно на сървъра за произход без кеширане (Pass).
Вvcl_backend_responseПодпрограма, проверяваме дали кодът на състоянието на отговора е 200 (ОК). Ако е така, ние определяме времето за живот (TTL) на кеширания отговор на 3600 секунди (1 час) и доставим кеширания отговор. В противен случай предаваме отговора директно на клиента без кеширане.
Усъвършенствани стратегии за кеширане
Условно кеширане
Понякога може да искате да кеширате съдържание въз основа на определени условия, като наличието на конкретна заглавка или стойността на параметъра на заявката. Ето пример за условно кеширане въз основа на параметър на заявката:
sub vcl_recv {if (req.method == "get" && req.url ~ "\? cache = true") {return (hash); } else {return (pass); }}
В този пример, ние кеш получаваме заявки, които иматкеш = вярноПараметърът на заявката в URL адреса.
Кеш инвалидация
Невалидността на кеша е процесът на премахване или актуализиране на кеширано съдържание, когато основните данни са се променили. Лакът предоставя няколко начина за обезсилване на кеша, като например използване начисткаметод или чрез задаване на по -къс TTL за динамично съдържание.
Ето пример за използване начисткаМетод за обезсилване на кеша:
sub vcl_recv {if (req.method == "purge") {if (client.ip ~ purge) {return (purge); } else {return (synth (405, "метод не е разрешен")); }}}
В този пример ние разрешаваме на клиенти с IP адреси, съответстващи начисткаACL за изпращане на заявки за чистка за обезсилване на кеша.
Кеширане на различни видове съдържание
Кеширане на статични активи
Статичните активи като CSS, JavaScript и изображения могат да бъдат кеширани дълго време, тъй като те не се променят често. Ето пример за кеширане на статични активи:
sub vcl_recv {if (req.method == "get" && req.url ~ "\. (css | js | jpg | png) $") {return (hash); } else {return (pass); }} sub vcl_backend_response {if (beresp.status == 200 && req.url ~ "\. (css | js | jpg | png) $") {set beresp.ttl = 86400s; // кеш за 1 ден връщане (доставете); } else {return (pass); }}
Динамично съдържание на кеширане
Динамичното съдържание, като специфични за потребителя страници или данни в реално време, изисква по-внимателна кешираща стратегия. Един от подходите е да се използват сурогатни ключове за маркиране на кеширано съдържание и явното, когато съответните данни се променят.
sub vcl_backend_response {if (beresp.status == 200 && beresp.http.surrogate-key) {set beresp.hash_always_miss = false; задайте beresp.ttl = 300s; // кеш за 5 минути връщане (доставете); } else {return (pass); }}
В този пример ние кешираме отговорите, които иматСурогат-ключЗаглавка за 5 минути.
Използване на вградените функции и променливи на лак
Varnish предоставя богат набор от вградени функции и променливи, които могат да се използват за прилагане на по-сложни стратегии за кеширане. Напримерreq.http.cookieПроменлива може да се използва за изключване на заявки с определени бисквитки от кеширане.
sub vcl_recv {if (req.method == "get" &&! req.http.cookie ~ "session_id") {return (hash); } else {return (pass); }}
Заключение
Прилагането на кеширащи стратегии в лак VCL може значително да подобри производителността и мащабируемостта на вашите уеб приложения. Разбирайки основите на лак и VCL и използване на модерни техники като условно кеширане, инвалидиране на кеш и сурогатни клавиши, можете да оптимизирате вашата кешираща настройка, за да отговорите на специфичните нужди на вашето приложение.
Ако се интересувате да научите повече за нашите решения за лак или да обсъдите как можем да ви помогнем да приложите най -добрите стратегии за кеширане за вашия бизнес, моля, свържете се с нас за консултация с обществени поръчки. Ние предлагаме широка гама от лакови продукти, включителноПрозрачен лак на основата на вода,Полиуретанова гласа на водна основаиМатово покритие на водна основа.
ЛИТЕРАТУРА
- Софтуерна документация за лак
- Високопроизводителна мрежа за браузър от ILYA GRIGORIK
