Současné sdílené webhostingy jsou dostatečně výkoné, aby bez větších problémů utáhly i běžně používané náročnější redakční systémy. Snad s výjimkou Magento. Zde se jedná o opravdu masivní řešení, které je spíše pro virtuální privátní server, kde se dá výrazně ušetřit prostředky využitím specifické konfigurace serverů a akcelerátorů. Ačkoliv vám určitě sdělí provozovatelé, že nemají s Magento problém, zvažte místo něj využití jiného CMS.
Cachovací pluginy
Absolutním základem optimalizace by mělo být vhodné zvolení cachovacícho pluginu pro váš redakční systém. Ačkoliv sebou přináší i určitá úskalí, výhody téměř vždy převažují. Navíc se dnes dá vybrat mezi více druhy, které mají různou úroveň obtížnosti nasazení. Například u WordPress můžete zvolit jednoduchý Quick Cache anebo masivní řešení W3 Total Cache, které na správně nakonfigurovaném serveru dokáže zrychlit generování stránky o 80 – 90 %.
Jak vlastně cachovací pluginy fungují
V podstatě se jedná o komplexní řešení, využívající všechny dostupné metody a doporučení, které vedou k rychlejšímu nahrávání stránky samotné. Řeší například následující situace.
Cachování na straně prohlížeče
Jednou ze základních funkcí je komunikace s prohlížečem návštěvníka. Většina dokumentů na stránce se totiž v průběhu času nemění a tak není nutné, aby návštěvníkův prohlížeč při každé návštěvě stahoval pořád stejný obsah.
Některé prvky jako javascript, css anebo prvky webdesignu se mění jen zcela výjimečně a soubory jako .pdf anebo multimédia obecně se nemění nikdy. Cachovací plugin se o toto vše postará.
Spojování malých souborů do větších
Je daleko efektivnější dát dohromady všechny css soubory do jednoho. To platí i pro javascript. Ve výsledku si prohlížeč stáhne vždy jen jeden soubor. Ušetří se systémové prostředky a dokonce v některých případech může zabránit i případným problémům se serverem. Jsou známi případy, kdy měl člověk internetovou prezentaci složenou ze stovek menších souborů. Server pak vyhodnocoval neustále požadavky jako pokus o DoS útok.
Další nepříjemnosti, které se vyhnete je odkazování jednoho souboru na další, které odkazují pak na další. Často se mohou nacházet i na jiném serveru. Když budete mít vše pod jednou střechou vyhnete se i případným problémům, pokud externí zdroj bude nedostupný.
Minimalizace přesměrování
Přesměrování může způsobovat nejen nepříjemné zpomalování, ale také v případě kombinace zabezpečeného a nezabezpečeného obsahu varovné hlášení prohlížeče. Opět je to o tom mít vše pod kontrolou.
Mimo přesměrování je třeba dávat si i pozor na neexistující stránky.
Akcelerace na úrovni CMS
Mimo tyto základní věci, ale hlavně cachovací pluginy před-připravují obsah. Na stránce se toho zas tak tolik nezmění. Například stránku s tímto článkem bude nutné obnovit teprve až někdo přidá komentář, anebo se změní něco v postranním menu. Mezi tím může proběhnout i několik desítek či stovek návštěv, kdy se stránka nezmění. Technicky vzato by tak stačilo stránku vygenerovat jedenkrát a všem servírovat statický obsah. Ve skutečnosti se předgenerovávají jen části stránek. Určité elementy, které jsou náročné na výkon serveru (převážně disky).
Akcelerace na úrovni serveru
U sdíleného hostingu s tímto moc nenaděláme. Nemáme moc možností pro individuální nastavení. Navíc jak už napovídá i název sdílíme prostředky s dalšími zákazníky společnosti. Na vlastním serveru bychom si mohli například jednotlivé skripty dát do paměti. To jsou faktory, které neuvěřitelně zrychlí celý práci s PHP, kdy se pokaždé volaný skript musí kompilovat.
Ukázka efektivity
U následujícího WordPressu s více jak 60 posty byl vypnut plugin W3 Total Cache. Následně zapnut a provedeny dvě měření. Testovalo se pomocí nástroje tools.pingdom.com přes datacentrum umístěné v Holandsku.
Jak je vidět z prvního testování stránka se nahrávala kompletně celá 4,78 vteřiny a počet dotazů byl 84.
Následně došlo k zapnutí pluginu a provedeno nové měření. Plugin zredukoval počet dotazů na 72 (tedy o celých 12), což také přispělo k snížení doby načítání na 2,32 vteřiny (zlepšení o 2,46 vteřiny je znatelné.)
Plugin už měl předkompilovaná data, takže při opakovaném testu dokázal opět snížit počet requestů (část už měl prohlížeč v cache) a celkovou délku snížit na 1,84 vteřiny. Celkové tedy zrychlil načítání webu o 2,94 vteřiny. Přitom pracoval pouze s prostředky, které mu umožňoval sdílený hosting. Na vlastním serveru by se dalo očekávat daleko výraznější zrychlení.
Závěrečné pojednání
S cachovacími pluginy si užijete spoustu zábavy. Mají nepřeberné množství nastavení, takže laděním strávíte i celé odpoledne. Výsledek ale bude určitě stát za to. Většina z nich vkládá data i do souborů ovlivňující chování serveru – .htaccess, pokud jej budete modifikovat určitě si jej ale nejdříve zazálohujte.
Další důležité upozornění se týká systémových prostředků. Předpřipravené části kódu si cachovací plugin ukládá na disk. V případě, že máte velmi rozsáhlý web, může dojít k vytvoření tisíců či desítek tisíc malých souborů, které velice rychle zaplní disk. Některé sdílené hostingy navíc mají limitovaný počet souborů, aby si usnadnili zálohování (respektive vůbec zálohování bylo možné). Může se tak stát, že dostanete upozornění na porušování pravidel, přetěžování infrastruktury atd.
Tento článek byl byl přečten 3423 krát