V poslední době bylo řečeno mnoho zásluhy statických míst . Ale v mnoha situacích je nutný dynamický přístup. Ať už jde o systém správy obsahu, nástroj pro vztahy se zákazníky nebo on-line obchod, umožňují koncovým uživatelům rychle a důsledně udržovat složité stránky. A když se správně sestaví, mohou soupeřit s statickými místy pro rychlost.

každá aplikace, která potřebuje často číst a zapisovat data, způsobí znatelné zpoždění

Bez ohledu na systém, který používáte, dynamické stránky obvykle obsahují podobné prvky. Jedná se o formu webového serveru, backendu a aplikace napsané v jednom nebo více programovacích jazycích. Tato kombinace komponent poskytuje velkou flexibilitu, ale každá z nich přispívá vlastní režií a zvyšuje dobu načítání, což se všechny moderní webové stránky chtějí vyhnout. To platí zejména pro přístup k databázi, každá aplikace, která potřebuje často číst a zapisovat data, způsobí znatelné zpoždění.

To pomůže při ukládání do mezipaměti a vhodná strategie pro ukládání do mezipaměti. Základním cílem ukládání do mezipaměti je zabránit zbytečně častým voláním mezi vrstvami databází aplikací a místo toho použít předem generované statické stránky HTML, které jsou mnohem rychlejší v renderování.

Ukládání do mezipaměti prohlížeče

První mezipaměť, kterou by si někdo všiml, je mezipaměť v prohlížeči. Kolikrát vás vývojáři požádali, abyste provedli "obnovení síly", abyste viděli změny? Prohlížečové mezipaměti jsou jednoduché, ale jsou dobrým východiskem pro začátek vysvětlení koncepcí ukládání do mezipaměti. Prohlížeč ukládá reprezentace navštívených webových stránek v počítači uživatele, obvykle je aktualizuje jednou za relaci, pokud jsou tyto stránky zjištěny nebo vynuceny.

Proxy caching

Společným nástrojem, který používají majitelé stránek a správci, je "reverzní mezipaměť proxy", která se nachází mezi žádostmi o stránky vytvořenými webovým prohlížečem a webovou aplikací. Zablokuje požadavky a vykresluje kopie stránek přímo z mezipaměti, čímž je dosaženo výrazného zvýšení rychlosti.

Existuje několik hlavních možností mezipaměti proxy pro self-install nebo jako "Software as a Service". (Ignorujeme poskytovatele hostingu cloud, kteří typicky balíjí vše, co byste mohli potřebovat, do samostatného webového balíčku.)

Mezi oblíbené možnosti mezipaměti proxy patří:

  • Lak (viz. níže);
  • Oliheň ;
  • Nginx (kombinovaný webový server a mezipaměť serveru proxy).

Možnosti SaaS pro ukládání do mezipaměti obecně spočívají ve světě sítí pro poskytování obsahu (CDN), které místo uložení mezipaměti mezi uživatelem a webovým zásobníkem slouží uživatelům sady obsahu v mezipaměti, které jsou geograficky nejblíže k nim. Je to jemný rozdíl, ale pro velké stránky s globálním publikem může být významný rozdíl.

Použití laku

Lak je k dispozici ve všech správcích balíčků pro Linux, jako obrázek Dockeru a mnoho dalších možností, přečtěte si stránky instalace projektu Více podrobností.

Základní konfigurace laku

Lak uchovává výchozí konfigurační soubor buď na /usr/local/etc/varnish/default.vcl nebo /etc/varnish/default.vcl , napsaný v VCL (Konfigurační jazyk laku). Tento konfigurační soubor je kompilován do malého programu prostřednictvím interpreta C, který ještě více zvýší rychlost.

V závislosti na tom, jak jste nainstalovali lak, bude konfigurační soubor vypadat takto:

backend default {.host = "127.0.0.1";.port = "8000";}

Nejjednodušší je to, že definuje výchozí záložní verzi používanou společností Varnish, která definuje hostitele a port, který by měl naslouchat a zachytit obsah.

Zpětné volání

Jedna praktická funkce Varnish kontroluje v předem definovaných intervalech, pokud je backend stále zdravý. Říká se to 'Backend Polling' a je nakonfigurován přidáním části sondy do deklarace backend:

.probe = {.url = '/';.timeout = 34ms;.interval = 1s;.window = 10;.threshold = 8;}

Výše uvedené jsou výchozí nastavení poskytovaná společností Varnish a řekněte mu, že navštíví určitý .url každý .interval a pokud alespoň pro .threshold ze sond .window url reaguje v rámci .timeout milisekundy, backend je stále považován za zdravý. Jakmile se posuzuje jako "nezdravý", obsah se v předem definované době předává z vyrovnávací paměti.

Spuštění laku

Budeme pokrývat konkrétní změny konfigurace laku v rámci každé volby platformy, proč se nyní podíváme na obecné možnosti.

Porty

Zpočátku bude port pro váš webový server nutné změnit z výchozího. Například v konfiguraci Apache Vhost změňte port na 81 nebo 8080.

Spusťte lakomský démon pomocí příkazu lak nebo pomocí balíčku služeb. Démon má možnosti vlajek, nejčastější a užitečnější jsou:

  • -f: Nastaví cestu k konfiguračnímu souboru.
  • -s: Možnosti úložiště mezipaměti. Nastavením tohoto parametru na paměť RAM bude dosaženo ještě vyššího zvýšení rychlosti.

Kontrola všech funguje

Spusťte příkaz varnishstat nebo navštivte isvarnishworking.com abyste zkontrolovali, zda je váš lakový server připraven a jak poslouchá požadavky.

Co není do mezipaměti

Existují určité části webu, které nechceme mezipaměti, například stránky správy. Můžeme je vyloučit vytvořením podprogramu vcl_recv ve výchozím souboru.vcl, který obsahuje příkaz if, který definuje, co není do mezipaměti:

sub vcl_recv {# URI of admin folderif (req.url ~ "^/url/"){return (pass);}return(lookup);}

Používáte-li lak 4, jsou věci mírně odlišné, včetně hodnot návratu. Funkce vcl_recv nyní vrátí hodnotu ahash namísto vyhledávání.

sub vcl_recv {...return(hash);}

Toto je také místo, kde jsme nastavili stránky nebo subdomény, které by měl Varnish ignorovat přidáním req.http.host ~ 'example.com' do příkazu if .

Cookies

Ve výchozím nastavení Varnish nebude ukládat do mezipaměti obsah z backendu, který nastavuje soubory cookie. Podobně, pokud klient odešle soubor cookie, obejde Lak přímo do zadní strany.

Soubory cookie často používají weby pro sledování aktivity uživatelů a ukládání hodnot specifických pro uživatele. Obecně platí, že tyto soubory cookie mají pouze zájem o kód na straně klienta a nemají žádný zájem o backend nebo lak. Můžeme říct, že lak ignoruje soubory cookie, s výjimkou konkrétních oblastí webu:

if ( !( req.url ~ ^/admin/) ) {unset req.http.Cookie;}

Tento příkaz if ignoruje soubory cookie, pokud nejsme v oblasti administrátora webu, kde může být cookie předávání více užitečné (pokud opravdu chcete potlačit správce webu).

Jiné výjimky

S výchozí instalací Varnish také neukládá do mezipaměti stránky chráněné heslem, požadavky GET a HEAD.

Použití laku

Nyní se podíváme na dva perfektní případy použití pro lak: Drupal a Magento. Oba jsou vysoce dynamické systémy, které umožňují netechnickým uživatelům provádět celou řadu složitých úkolů. To může vést k zatížení stránky s náročnými daty na základě dotazu a zaneprázdněná místa se značně zpomalí. Typické stránky postavené s těmito systémy budou obsahovat směs obsahu, který je aktualizován neobvykle a často.

Drupal

Drupal má výchozí možnosti ukládání do mezipaměti, které mají podobné funkce jako lak, ale neposkytují flexibilitu nebo zvýšení rychlosti, které vyžadují větší nebo složitější weby.

V pravém Drupal způsobem existuje a modul pro manipulaci s lakováním uložit některé z výše uvedených manuálních konfigurací.

Nainstalujte modul a ujistěte se, že dodržujete instalační pokyny uvedené v souboru Readme modulu.

Ujistěte se, že soubor / etc / default / lak má následující možnosti daemon (a odsazení je důležité):

DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,128M"

Zajistěte, aby Apache a libovolní přidružené virtuální hostitelé naslouchali na portu 8080, ne 80. Po provedení těchto změn restartujte obě služby.

Na konfigurační stránce modulu budete možná muset nastavit "Klíč pro lakování". Zjistěte, co je to klíč s příkazem cat / etc / varnish / secret a vložte jej do stránky nastavení. Vyberte správnou verzi laku, uložte nastavení a v dolní části stránky byste měli vidět řadu zelených klíšťat.

Modul laku spolupracuje s výchozím nastavením mezipaměti Drupal, proto se ujistěte, že jste povolili a nakonfigurovali pro svůj případ použití.

Spusťte varnishstat z příkazového řádku, spusťte navigaci na webu jako anonymní uživatel a měli byste vidět změny ve výstupu příkazu.

Jedna z cest, kterou nechceme ukládat do mezipaměti v Drupalu, jsou stránky administrátora, můžeme to provést pomocí sub-rutiny vcl_recv :

sub vcl_recv {# URI of admin folderif (req.url ~ "^/admin/"){return (pass);}unset req.http.Cookie;return(lookup);}

Možná budete chtít zvážit, zda nejsou ukládány do mezipaměti (přihlášené) uživatelské stránky, stránky s aktualizací systému a další stránky vygenerované vysoce dynamickými moduly, jako je například vlajka, která používají rozsáhlé funkce systému ajax. To provedete přidáním dalších parametrů req.url do příkazu if .

Magento

Výchozí instalace programu Magento se dodává s interním systémem ukládání do mezipaměti, který ukládá statické verze prvků webu do určité složky. Stránka Systém -> Správa mezipaměti poskytuje přehled aktuálního stavu vyrovnávací paměti a umožňuje vám vymazat všechny nebo jednotlivé mezipaměti. Soubory CSS a JS a auto-generované obrazové soubory můžete vymazat z této stránky.

Nadcházející verze Magento bude podporovat vkládání do mezipaměti Varnish default, ale prozatím potřebujeme využít zásuvné moduly třetích stran, doporučuji Modul terpentinu . Ujistěte se, že jste si přečetli soubor Readme projektu protože si všimne některých dalších konfiguračních kroků, ignorovat je může poškodit vaše stránky.

Modul Turpentine je vysoce konfigurovatelný a provede potřebné změny souborů vcl a Varnish config pro vás. Některé klíčové možnosti nastavení jsou:

  • Backend Host : Hostitel laku, který má výchozí hodnotu 127.0.0.1
  • Backend Port : Port Varnish běží na, výchozí 80
  • Blacklist adresy URL : seznam adres URL, který se nikdy nevyrovná vzhledem k kořenovému serveru Magento. Administrační a API adresy jsou automaticky zahrnuty.

Modul Terpentine se spojí s výchozí mezipamětí Magento, takže vyčištění mezipaměti na stránce cache Laku vymaže příslušné lakované mezipaměti.

Obecné tipy

Kromě použití laku s některým z výše uvedených dynamických systémů je zde řada dalších různých tipů, které pomohou cache-schopnost jakéhokoli místa.

Konzistentní adresy URL

Pokud používáte stejný obsah v různých kontextech, měl by používat stejnou adresu URL. Nekombinujte například použití článků article.html , article.htm a článku , i když to vaše CMS může povolit. To povede ke třem různým verzím stejného obsahu v mezipaměti.

Používejte cookies mírně

Jak jsme viděli výše, soubory cookie jsou těžké ukládat do mezipaměti a jsou zřídkakdy tak nezbytné, jak si myslíme. Zkuste omezit jejich použití a číslo na dynamické stránky.

Správa souborů

Načítání majetku webu může být jednou z nejvíce časově náročných částí vykreslování stránek a existují jednoduché tipy pro snížení tohoto zatížení:

Použití ikony CSS Image pro ikonografii namísto několika malých souborů vede k menší síti provozu.

Hosting knihoven CSS a JavaScript místně znamená menší síťový provoz a větší kontrolu nad strategiemi ukládání do mezipaměti. To může znamenat nárůst režijních nákladů na údržbu, aby byly tyto aktiva aktuální. Uložte tato jména do konzistentně pojmenovaných složek, takže odkazy na ně mohou být také konzistentní.

Rychle vpřed

Doufám, že tento úvod k urychlení vašich dynamických stránek s ukládáním do mezipaměti byl užitečný. Výkonnostní výkon stojí za počáteční období konfigurace, experimentování a ladění. V této éře krátké pozornosti a netrpělivost, jakýkoli nárůst rychlosti, který můžete vytlačit z vaší instalace, bude znamenat rozdíl pro vaše uživatele a konkurenci.

Doporučený obrázek, obraz cache sítě přes Shutterstock.