Na Facebooku proběhla celkem zajímavá diskuze o zdlouhavém přesměrování u WordPress, které může jít až do vteřin. Přitom zcela zbytečně. Dneska si ukážeme tři druhy přesměrování a jaký vliv mají na výkon WordPress.

Čím v nižší vrstvě pracujeme, tím dosahujeme u přesměrování vyšší rychlosti. Rozdíly přitom jsou opravdu značné.

Přesměrování přes .htaccess

V podstatě se jedná o přesměrování na úrovně serveru. Pokud například potřebujete udělat přesměrování www varianty na ne-www variantu webu, tak by to vždy mělo být přes .htaccess. Rychlost takovéhoto přesměrování maximálně v desítkách milisekund. Což je také bezkonkurenční výhodou této metody.

Pokud jde o nevýhody, tak je třeba vzít v potaz, že o tomto přesměrování se WordPress nedozví. Případné ladící nástroje formou pluginu zde tedy nepomohou. Neuvidíte chyby ani případné ztráty návštěvnosti. Pro ladění je třeba použít error.log a access.log, které generuje přímo Apache.

Tento druh přesměrování by měl být jen pro dlouhodobě pevná přesměrování, které nebude třeba měnit. Zásahy do .htaccess mohou být pro web fatální 😉

Přeměřování přes PHP (WordPress)

WordPress umí provádět přesměrování přes PHP. Většinou se toto přesměrování používá pro monitorování odchozích odkazů anebo když nejde použít .htaccess. Zde je výhodou naprostá kontrola nad přesměrováním ze strany WordPress. Může tedy vytvářet statistiky, přesměrovávat podle určitých parametrů (jazyk prohlížeče, účtů atd.).

Velkou nevýhodou je, že se musí stáhnout celé jádro WordPress. Nepoužívá se přitom cache. Takže se připravte na to, že přesměrování může trvat i několik vteřin. Záleží kolik pluginů používáte a co zrovna potřebují dělat. Návštěvník, který na takovouto stránku přijde, tak čeká na načtení obsahu podstatně delší chvíli.

Dále k přesměrování probíhá přes hlavičku, kterou server odešle prohlížeči. Před touto hlavičkou se nesmí vypsat žádný text, dokonce ani mezera. Pokud k tomu dojde, tak se vypíše chyba a k přesměrování nedojde.

Warning: Cannot modify header information - headers already sent by ...

Takto mohou rozbít WordPress třeba varování o nepodporované funkci v PHP, s kterými se setkáte pokud přejdete na vyšší verzi PHP. Chce si to opravdu hlídat.

Obecně přesměrování přes PHP se používá pokud potřebujte kontrolovat kam uživatele pošlete. Například započítáváte prokliky na reklamu.

Přesměrování přes internetový prohlížeč

Toto přesměrování probíhá na straně uživatele přímo v jeho prohlížeči. Dá se udělat prostřednictvím JavaScriptu.

window.location.replace("http://doména.tld/stránka.html");

Anebo HTML (meta tag)

<meta http-equiv="refresh" content="2;url=http://doména.tld/stránka.html" />

Vyžaduje tedy minimálně nahrát HTML kód/JavaScript. Spotřebovány tedy jsou zdroje WordPress na vygenerování stránky.

Asi se ptáte v čem je vlastně výhody.

Předně tento druh stránky se dá uložit do cache. Vygenerování tedy můžete stáhnout na desítky vteřin. Přitom můžete sesbírat všechny informace, které potřebujte.

Dále se přesměrování prostřednictvím prohlížeče většinou používá, když chcete dát uživateli možnost volby. Například kam chce být přesměrován anebo přesměrování odpočítáváte a uživatel jej může zastavit. Jedná se o dost specifické využití, například hojně užívané u stahování souborů (v podstatě přesměrujete uživatele na stahovaný soubor).

Nevýhodou je, že prohlížeč uživatele může mít z nějakého důvodu tuto funkci vypnutou. Údajně až 0,5 % lidí má vypnutá JavaScrpt.

No a kdy to použít? Tak krom přesměrování na stahované soubory občas potřebujete posbírat větší množství dat. No a než čekat 10 – 15 vteřin na načtení stránky, tak je lepší načíst za 1 vteřinu stránku, zobrazit informaci, že se připravuje přesměrování/stahování. Mezitím Ajax posbírá potřebná data a doplní je do odkazu pro přesměrování.

V neposlední řadě se přesměrování před internetový prohlížeč používá na stránkách, kde hosting nepodporuje skriptování ani .htaccess. Většina hostingů totiž dává k doménám takovýto minihosting o pár megabajtech. Není nic jednoduššího než jej využít na přesměrování. I když dneska se spíše volí funkce domain forwarding (přesměrování domény).

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInBuffer this page