Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX

Procédure

Proč urychlit načítání vašeho webu? 

Je dobré vědět, že rychlost načítání vašeho webu je zásadní pro zajištění jeho úspěchu. Například pro firmu to vytváří první dojem u jejích návštěvníků. Navíc příliš dlouhé načítání tohoto webu může mít vliv na SEO vašeho webu ve vyhledávačích a neposkytne dostatečnou viditelnost, aby mohl fungovat.

Neexistuje žádná hranice, kterou byste neměli překročit, pokud jde o načítání vašich webových stránek. Nicméně doba načítání většiny internetových stránek je kratší než tři sekundy.

Co je Fastest Cache a k čemu slouží? 

Nástroj Fastest Cache je systém navržený a vyvinutý společností LWS, který umožňuje optimalizovat načítání vašeho webu díky použití mechanismů page cache, nakonfigurovaných na úrovni webového serveru. Nástroj kombinuje technologie poskytované NGINX a Varnish.

NGINX je webový server zaměřený na výkon, který umožňuje zpracovat mnohem více požadavků ve srovnání s tradičním webovým serverem Apache HTTPd Server (viz náš blogový článek s názvem “Apache VS Nginx : Test de performance”). LWS používá NGINX, aby mohl předem přijímat vysoký objem HTTP požadavků bez kompromisů ve výkonu. Ty pak mohou být účinně filtrovány a mohou být eliminovány škodlivé požadavky (viz LWS Protect) a HTTP požadavky mohou být směrovány na cache server Varnish nebo LiteSpeed, podle volby klienta v jeho hostingovém rozhraní.

Varnish je HTTP služba implementující mechanismus page cache, který umožňuje ukládat výsledek HTTP požadavku do paměti RAM.

Při správném nastavení umožňuje NGINX přijímat více požadavků na váš web a Varnish zároveň urychluje dobu načítání stránky a snižuje spotřebu CPU a paměti RAM.

Jak funguje služba Fastest Cache?

Fungování bez cache

Pro lepší pochopení fungování si nejprve ukážeme, jak to probíhá bez systému cache, aby si návštěvník mohl zobrazit váš web.

Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX
Zpracování HTTP požadavku bez Fastest Cache
  1. Návštěvník požádá server o stránku. Příklad: index.php
  2. Webový server provede potřebné spuštění skriptů (PHP, Python, Node.js …)
  3. Webový server obdrží výsledek spuštění
  4. Webový server odešle HTML stránku vzniklou z výsledku spuštění skriptu

Fungování s modulem Fastest Cache

Když je Fastest Cache aktivován, cache server je vložен mezi návštěvníka a webový server.

Cílem je snížit počet potřebných spuštění skriptů tím, že se výsledek spuštění uchová v paměti pro další požadavky vyžadující stejnou odpověď. To umožňuje nespouštět stejný skript opakovaně za účelem dosažení stejného výsledku.

Tím odstraňujeme čekací dobu na spuštění skriptu z doby načítání stránky a zároveň šetříme zdroje použité při spuštění skriptu.

Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX
Zpracování HTTP požadavku s Fastest Cache

1. Návštěvník požádá server o stránku. Příklad: index.php
2. Fastest Cache ověří, zda lze odpověď získat z cache:

  • Pokud ano, stránka je návštěvníkovi vrácena přímo bez nutnosti přístupu k webové službě a bez spuštění skriptu
  • Pokud ne, stránka je vygenerována webovým serverem, což vyvolá spuštění skriptu (PHP, Node.js, Perl, Ruby, …). Jakmile je stránka vygenerována, Fastest Cache určí, zda lze odpověď uložit do cache.
    • Pokud ano, stránka je uložena do cache paměti a odeslána návštěvníkovi
    • Pokud ne, stránka je odeslána návštěvníkovi bez uložení do cache paměti

Je patrné, že když je stránka uložena v cache paměti, zpracování webovým serverem i spuštění skriptu se obejde, což výrazně snižuje dobu zpracování a spotřebu zdrojů.

Chování systému ukládání do cache

Fastest Cache se při rozhodování o chování ukládání do cache opírá o více signálů:

  • Přípona souboru v URL
  • Přítomnost a obsah URL parametrů (query strings)
  • Hlavička odpovědi Cache-Control
  • Cookies

Fastest Cache také detekuje některé CMS a rozšíření / moduly a implementuje specifické chování ukládání do cache související s těmito nástroji.

Chování při přijetí požadavku

Fastest Cache ukládá do cache pouze metody HTTP GET a HEAD.

Když návštěvník navštíví URL, Fastest Cache normalizuje požadavek odstraněním cookies a URL parametrů, které neovlivňují finální vykreslení skriptu na straně serveru (URL parametry Google Analytics, cookies související se skripty Javascript ...).

Po normalizaci se ověří, zda požadavek obsahuje HTTP autentizaci (hlavička HTTP požadavku Authorization) nebo zda zůstávají nějaké cookies (hlavička HTTP požadavku Cookie). Pokud ano, požadavek bude odeslán na webový server bez průchodu cache systémem.

Chování při odesílání odpovědi

Pokud požadavek při přijetí neobešel cache, Fastest Cache znovu analyzuje poskytnutou HTTP odpověď webového serveru a ověřuje, zda je možné odpověď uložit do cache pro budoucí použití.

Pokud HTTP odpověď obsahuje hlavičku HTTP odpovědi Cdn-Cache-Control, Fastest Cache okamžitě respektuje to, co je v ní definováno:

  • Pokud je zde definováno no-store, no-cache nebo private, Fastest Cache vrátí odpověď návštěvníkovi bez uložení do cache.
  • Pokud je zde definováno s-maxage nebo max-age, Fastest Cache tuto hodnotu okamžitě použije jako dobu uchování stránky v cache.

Pokud je Cdn-Cache-Control definováno společně se Set-Cookie, Cdn-Cache-Control bude ignorováno a odpověď nebude uložena do cache.

Statické soubory odpovídající tématům, pluginům, uploadům a jádru WordPressu jsou automaticky uchovávány v cache po dobu 30 dní.

Pokud HTTP odpověď pochází ze systému page cache LWS Optimize, WP Fastest Cache, Airlift, W3 Total Cache, WP Rocket, WP Optimize nebo FastPixel, je uchovávána v cache po dobu 7 dní. Tyto pluginy WordPress samy provedou purge cache Varnish, když smažou page cache.

Pokud HTTP odpověď pochází ze složky /_next/static, je také uchovávána v cache po dobu 7 dní.

Pokud HTTP odpověď vrátí kód HTTP 404, je uchovávána v cache po dobu 900 sekund. To umožňuje vyhnout se dalším zbytečným požadavkům na databázi MySQL, zejména u WordPressu.

Pokud HTTP odpověď vrátí kód HTTP 500, odpověď není nikdy uchována v cache.

Pokud HTTP odpověď obsahuje cookie (hlavička HTTP odpovědi Set-Cookie), odpověď není nikdy uchována v cache.

Pokud HTTP odpověď poskytuje hlavičku HTTP odpovědi Cache-Control nebo Surrogate-Control, Fastest Cache se řídí očekávaným chováním cache pro prohlížeče. Pokud jsou tyto hlavičky poskytnuty spolu s Cdn-Cache-Control, Fastest Cache ignoruje Cache-Control a Surrogate-Control ve prospěch Cdn-Cache-Control. To například umožňuje vynutit, aby prohlížeč při každé návštěvě provedl HTTP požadavek pro zobrazení seznamu článků, aniž by seznam článků chyběl v serverové cache.

Představení rozhraní a aktivace služby

Fastest Cache se zobrazuje jako ikona v cPanelu v sekci “Performance”.

Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX

Po vstupu do rozhraní se v seznamu zobrazí hlavní doména, další domény a subdomény.

Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX

  • Sloupec “Stav cache” zobrazuje stav aktivace cache. Pokud je na “Aktivováno”, cache je aktivní.
  • Tlačítko “Vymazat cache” umožňuje odstranit všechna data v cache pro konkrétní doménu.
  • Tlačítko “Deaktivovat cache” umožňuje vypnout ukládání do cache.
  • Tlačítko “Aktivovat cache” umožňuje zapnout ukládání do cache.
  • Tlačítko “Změnit provozní režim” umožňuje upravit chování cache systému. Tyto režimy budou vysvětleny níže.

Různé režimy cache

Ve výchozím nastavení volí cache systém režim „Obecné použití“, který je vhodný pro obecné použití. Existují však i jiné režimy:

Vývojářský režim : stejné jako deaktivace cache, umožňuje obejít cache systém během vývojových období.
WordPress : režim cache více vhodný pro WordPress, kde je lepší správa složek (wp-content, wp-admin, …) a specifických cookies WordPressu.
Prestashop : režim cache více vhodný pro Prestashop, kde je lepší správa složek a cookies.

Fastest Cache : zrychlete své stránky pomocí Varnish a NGINX

Vyprázdnění cache

Kromě rozhraní cPanelu, které umožňuje vymazat cache, je možné cache vyprázdnit ručně z terminálu SSH účtu cPanel nebo ze skriptu hostovaného na serveru.

Spouštěné z vašeho hostingu (PHP skript vašeho webu, Cron úloha nebo terminál SSH), tyto metody nevyžadují ani API token, ani přihlašovací údaje: Fastest Cache přímo přijímá HTTP metody PURGE.

Vymazání cache pomocí cURL

Vymazat cache stránky:

⌨ Příkaz
curl -X PURGE https://mon-site-web.com/mapage.php

Tímto se vymaže cache URL https://mon-site-web.com/mapage.php.

Vymazat cache složky:

⌨ Příkaz
curl -X PURGE 'https://mon-site-web.com/wp-content/uploads/.*'

Tímto se vymažou všechny cache URL začínající na 'https://mon-site-web.com/wp-content/uploads/'

Vymazat cache webu

⌨ Příkaz
curl -X PURGE https://mon-site-web.com/.*

U všech těchto tří příkazů jsou možné tři návratové hodnoty:

HTTP kód 200 : vyprázdnění cache proběhlo úspěšně bez chyby.

HTTP kód 4xx : vyprázdnění cache není povoleno.

HTTP kód 5xx : došlo k chybě.

Automatické vymazání pomocí PHP skriptu (Cron úloha)

Následující skript vyprázdní cache celého webu nebo jen několika stránek. Zkopírujte jej do souboru purge-cache.php na vašem hostingu a poté uveďte svou doménu v $site. Pokud chcete vymazat pouze některé stránky, uveďte je v $pages.

Kód
 'PURGE',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CONNECTTIMEOUT => 5,
        CURLOPT_TIMEOUT        => 20,
    ]);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $code;
}

if (empty($pages)) {
    echo date('Y-m-d H:i:s') . ' úplné vymazání : HTTP ' . purger($site . '/.*') . PHP_EOL;
}
else {
    foreach ($pages as $page) {
        echo date('Y-m-d H:i:s') . ' ' . $page . ' : HTTP ' . purger($site . $page) . PHP_EOL;
    }
}

Pro automatické spuštění například každou noc vytvořte Cron úlohu, která tento soubor spustí pomocí PHP. Pokud chcete jednoduše vyprázdnit celou cache, může Cron úloha také přímo spustit:

⌨ Příkaz
curl -s -o /dev/null -X PURGE 'https://mon-site-web.com/.*'

Vymazání pomocí pluginu nebo modulu

Většina pluginů/modulů s integrací Varnish je kompatibilní s interním mechanismem vymazání Fastest Cache.

Zde jsou některé testované a ověřené kompatibilní pluginy:

Detekce HTTPS a přesměrování

Stav HTTPS a porty uvedené na Apache jsou injektovány do prostředí a obvykle nevyžadují žádnou další úpravu.

Pokud však detekce HTTPS u Fastest Cache nefunguje, může to způsobit nekonečné smyčky přesměrování. V takovém případě bude nutné upravit detekční údaje.

Důvěryhodné HTTP hlavičky pro detekci jsou:

  • X-Forwarded-Proto
  • X-Forwarded-Port

Pokud tedy používáte následující HTTPS přesměrování s .htaccess:

Kód
RewriteEngine On 
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

a nefunguje to, můžete proměnnou SERVER_PORT nahradit X-Forwarded-Proto :

Kód
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

CloudFlare a další CDN

CDN typu CloudFlare mohou filtrovat HTTP požadavky, které by mohly blokovat požadavky “PURGE” používané Fastest Cache k vymazání cache. Doporučuje se proto při vymazávání pomocí curl uvést IP adresu serveru, abyste při mazacích operacích obešli CDN:

⌨ Příkaz
curl -X PURGE --resolve mon-site-web.com:443:IP_DU_SERVEUR 'https://mon-site-web.com/.*'

CDN mohou také obsahovat další vrstvu cache, kterou je nutné spravovat nezávisle na cache poskytované Fastest Cache.

help.lws.net/a/1515
Byl pro vás tento článek užitečný?

Ano

Ne

Přečteno 23 520×

Děkujeme! Neváhejte se ptát na naši dokumentaci, pokud chcete více informací, a pomozte nám ji zlepšit.

Podobné články

Otázky k článku 2

Položit otázku
raf
19. 9. 2022
Bonjour vous indiquez à la fin de votre article, qu’il faut utiliser un seul niveau de cache, donc je ne comprend pas si on peut utiliser cloudflare avec Fastest cache au niveau du serveur ou pas ?
fabrice-LWS Oficiální odpověď
20. 9. 2022
Bonjour, il est préférable d'utiliser qu'un système de cache afin de ne pas rencontrer de problème. L'utilisation de plusieurs systèmes de cache différents est souvent contre-productif et peut engendrer différents problèmes comme le blocage de certaines requêtes telles que celles permettant de purger le cache d'une page de votre site ou toutes les pages.
Byla pro vás tato odpověď užitečná?
raf
19. 9. 2022
Et au niveau du plug-in wordpress WP Rocket : est il compatible ?
fabrice-LWS Oficiální odpověď
20. 9. 2022
Bonjour, le plugin WP rocket est compatible avec Fastest Cache.
Byla pro vás tato odpověď užitečná?

Máte otázku k tomuto článku?

Položte ji týmu LWS a komunitě. Odpověď bude zveřejněna po kontrole moderátorem.

Položte týmu LWS a jeho komunitě otázku

GDPR: Správce: LWS-Ligne Web Services. Účel: moderace a veřejné zveřejnění vašeho dotazu, případné upozornění na odpověď. Právní základ: souhlas (čl. 6 odst. 1 písm. a GDPR). Uchovávání e-mailů: 90 dní po upozornění, nejvýše 12 měsíců bez odpovědi. Pro uplatnění svých práv viz oddíl GDPR našich obchodních podmínek.