SquidMan: začněte skutečně cachovat webové stránky, zrychlíte tak web i ušetříte

Dříve v dobách opravdu pomalého připojení k internetu patřily proxy servery, tedy počítače sloužící jako vyrovnávací paměť internetu, k téměř nutnému vybavení. Svůj účel mají ale i dnes – v dobách rychlého připojení.

Jen se změnil důvod, proč chtít webovou vyrovnávací paměť použít. Zatímco dříve jsme ji blahořečili za zrychlení pomalého připojení, dnes je vhodné ji nainstalovat především z důvodů úspory datového toku –  protože zaklínadlo FUP na nás číhá snad na většině běžně dostupného připojení k internetu. A může jít o úsporu více než patrnou, jak se ukázalo z našeho testování.

Ale to zatím trochu předbíháme. Pojďme si teď trochu vysvětlit, o čem je vlastně řeč. Hovořit budeme o takzvaných Proxy serverech – speciálních aplikacích, které sedí mezi vámi a internetem a usilovně ukládají všechny prvky webových stránek, které navštívíte, do své mezipaměti. Pokud kdykoli později přistoupíte na stejnou webovou stránku a váš prohlížeč se proxyserveru na tuto stránku dotáže, zkontroluje proxy server vše, co se na stránce změnilo a to také stáhne a předá zpět prohlížeči k zobrazení. Ale jen to, co se změnilo, nic víc.

V praxi tak dobře fungující server udělá toto: při prvním navštívení webové stránky uloží všechny stahované prvky na pozadí do vlastní mezipaměti. Pokud později – lhostejno, zda za hodinu nebo druhý den – budete chtít navštívit stejnou stránku, zkontroluje proxy server, co se na stránce změnilo. A zjistí, že se změnila pouze její struktura a jeden ilustrační obrázek u článku. Ten také stáhne a předá prohlížeči. To ale není vše: mimo to předá z vlastní paměti všechny ostatní prvky, které se na stránce nezměnily. Tím vám uspoří data, které se nemusela stahovat znova.

Pokud si vezmete modelovou situaci, že běžná velikost webové stránky se vší doprovodnou grafikou a obrázky má jeden megabajt, z čehož samotný HTML kód stránky zabírá například 128 KB, tak se při vaší první návštěvě stáhne z internetu celý obsah o velikosti jednoho megabajtu. Při opakované návštěvě se v ideální situaci stáhne znova pouze 128 KB a zbývajících 896 KB předá prohlížeči proxy server z vlastní mezipaměti.

Výhody tohoto použití jsou tedy hned dvě: na pomalém nebo běžně rychlém připojení se vám subjektivně zrychlí načítání především graficky náročných stránek a fotogalerií. Na počítačích s rychlým internetem můžete naopak přivítat úsporu dat – a to především v případě, že nad vámi visí strašák jménem FUP.

Ano, dalo by se namítnout, že přece vlastní cache mají také webové prohlížeče. Mají, ale ta je často velmi pomalá a neefektivní – profesionální proxy server léta optimalizovaný na výkon zkrátka podává diametrálně odlišné výsledky.

Naše testy

Proxy server používám na svých počítačích snad od nepaměti, teprve ale při přípravě tohoto článku mne přimělo napsat skript, který bude sledovat rozdíl mezi daty, které proxy server stáhne z internetu a které předá prohlížeči. Sledování probíhalo dva měsíce a bylo vyhodnocováno v týdenních intervalech. Sledovány byly dva počítače v redakci: jedním je můj hlavní pracovní počítač, na kterém připravuji stránky a druhým je notebook používaný pro běžnou kancelářskou práci.

Úspora přenesených dat se projevila především na pracovním počítači: za běžný týden proxy server předal prohlížeči o 832 MB více dat, než kolik sám stáhl z internetu. Na kancelářském notebooku byla týdenní úspora přenesených dat ve výši 234 MB. Když to spočítáme, ušetří tak proxy server něco přes tři gigabajty dat měsíčně na pracovním počítači (a necelý gigabajt na notebooku), což se již na vašem FUP projeví.

Projevila se nám také jiná zajímavá věc: výrazný vliv na rychlost má v případě použití samostatného proxy serveru naprosté vypnutí diskové cache webových prohlížečů – především u Firefoxu je rozdíl velmi citelný.

Proxy server a Mac OS X

Nejlepším a vlastně i nejpoužívanějším proxy serverem je Squid – multiplatformní aplikace původem z Linuxu. Jeho instalace však probíhá v prostředí příkazové řádky a jeho konfigurace je natolik rozsáhlá, že ji bez předchozích zkušeností zřejmě na poprvé nezvládnete. Naštěstí pod Mac OS X existuje jeho grafická nadstavba s názvem SquidMan. Jednoduchá grafická aplikace, která udělá vše za vás – nainstaluje do vašeho Maca Squid server, postará se o jeho chod i konfiguraci.

Pokud jej chcete vyzkoušet, stáhněte jej ze stránek projektu. Po stažení zobrazte obsah disku a přetáhněte růžovou chobotničku SquidMan mezi vaše ostatní aplikace a spusťte ji. Po prvním spuštění uvidíte okno s konfigurací. Pokud již zkušenosti s konfigurací Squidu máte, nastavte jej podle svých přání.

Ty ostatní nechejte bez povšimnutí, pouze vyplňte položku Visible hostname (Viditelné jméno) například jménem vašeho počítače bez mezer, teček, čárek, pomlček a diakritiky. V položce Cache size (Velikost Cache) zvolte, kolik místa na disku může Squid pro ukládání dat použít (čím více, tím lépe – pro běžné použití ale bude 1 GB až dost), v položce Maximum object size (Nejvyšší velikost objektu) zvolte, do jaké velikosti se mají stažená data ukládat do mezipaměti. Výchozí hodnotou jsou čtyři megabajty, což je pro běžné použití dostatečná hodnota.

Pokud chcete, aby se Squid spouštěl automaticky po spuštění aplikaci SquidMan, zaškrtněte položku Start Squid on launh (Spustit Squid po startu), v opačném případě budete vždy muset kliknout na tlačítko Start Squid v hlavní okně aplikace. Ostatní položky ponechejte beze změny, vyplatí se však zaškrtnout poslední položku Disable initial Squid DNS tests (Neprovádět úvodní testy DNS), a to především u notebooků často měnících různá připojení.

Další nastavení musíte provést na záložce Clients (Klienti) – Squid totiž dokáže sloužit pro více počítačů a proto je třeba mu říci, z jaké adresy má přijímat požadavky. My předpokládáme, že jej použijeme pouze na vlastním počítači, proto povolíme jen jej. Klikněte tedy na políčku New (Nový) a do políčka zadejte číselnou lokální IP adresu 127.0.0.1. Nyní vše potvrďte kliknutím na tlačítko Save (Uložit).

Nyní již zbývá pouze váš nově nainstalovaný proxy server spustit – v okně aplikace klikněte na tlačítko Start Squid. Po jeho spuštění – v řádku Status (Stav) uvidíte nápis Squid is running (Squid běží) můžete aplikaci zavřít, Squid již zůstane běžet na pozadí. Poznámka: po zapnutí počítače musíte Squid znovu spustit – je tak vhodně přidat si SquidMan mezi automaticky spouštěné aplikace po přihlášení.

A zbývá jen to nejjednodušší – říci operačnímu systému a všem aplikacím, že mají tento proxy server používat. V prostředí Mac OS X totiž všechny aplikace až na drobné výjimky (dříve mezi ně patřil například Firefox) přebírají nastavení proxy serveru přímo ze systému a tudíž nám stačí provést nastavení na jednom jediném místě:

  1. Otevřete Předvolby systému,
  2. klikněte na ikonu Síť,
  3. v levém sloupci zvolte připojení, pro které chcete proxy server použít (můžeme udělat stejná nastavení i pro více připojení) a klikněte na tlačítko Upřesnit,
  4. přepněte se na záložku Proxy,
  5. v sekci Vyberte protokol k nastavení zaškrtněte položku Web proxy (HTTP) a do položky Web proxy server zadejte lokální IP adresu 127.0.0.1 a do kolonky za dvojtečkou číslo portu, na které Squid poslouchá – tedy 8080,
  6. pokud používáte Facebook, nezapomeňte zadat text *faceboook.com (včetně hvězdičky) do políčka Vyřadit nastavení proxy pro tyto hostitele a domény,
  7. stejné opakujte také pro protokol FTP Proxy,
  8. klikněte na tlačítko OK a potvrďte všechny změny tlačítkem Použít.
  9. Hotovo!

Tak, a máte vše hotovo. Můžete otevřít prohlížeč a vyzkoušet, zda vaše proxy správně funguje. Pokud se vám načítají stránky správně, je vše v pořádku. Jak jednoduše zjistit, že opravdu jedete přes proxy server? Jednoduše zadejte na okna prohlížeče nějakou neexistující webovou adresu, třeba www.steve.jobs – a pokud uvidíte chybové hlášení od vašeho Squid serveru podobné jako já níže, tak přes něj opravdu jedete!

Co víc?

S myšlenkami navrhnutými v tomto článku můžete dále pracovat. Máte ve své domácnosti víc počítačů a jeden starý Mac někde v šuplíku? Udělejte proxy server z něj! SquidMan existuje také ve verzi pro stařičké PowerPC stroje, může tak vzít deset let starý PowerBook a nechat jej dělat server pro všechny vaše počítače. V takovém případě na ně nemusíte vůbec instalovat SquidMan a pouze je v nastavení sítě odkážete na tento dedikovaný stroj. Anebo v nastavení SquidMan v položce Parent Proxy ukážete na tento nadřazený server – kreativitě se meze nekladou.

U mě to tak funguje již léta: jedenáct let starý PowerBook Pismo leží v serverovně a nikdo o něm neví. Má nastaveno, aby 40 GB místa na disku použil pro Cache a maximální velikost objektu je nastavena na 1 GB. Ptáte se proč to? Je to skvělé například při updatech: při updatu prvního počítače se stáhne update z internetu a Squid na PoweBooku si jej uloží. Všem ostatním počítačům pak na jejich požadavky předává jen lokálně uložený soubor. A je obrovský rozdíl, zda Combo update o velikosti 800 MB stáhnete jednou nebo třikrát. A pokud máte v domácnosti více než jeden Windows počítač, budete podobné konfiguraci blahořečit.

10 komentářů: „SquidMan: začněte skutečně cachovat webové stránky, zrychlíte tak web i ušetříte

  • avatar
    12. 11. 2010 (10:28)
    Trvalý odkaz

    Ten poslední uvedený příklad (kešování opravdu velkých souborů) je jediný, kde vidím přínos. Ostatní jsou spíš mínusy. Je potřeba všude nastavit proxy, mít puštěný počítač navíc, vyřízení požadavku přes proxy (vrstva navíc) taky několik ms trvá. Ve chvíli, kdy ping k serveru máte 5 ms a proxy běží na 233Mhz Powerbooku to hádám na mnoha malých souborech bude znát.
    Pro běžné procházení webu stačí keše v prohlížečích. Technologicky fungují naprosto stejně, rozdíl je jen ve velikosti keše (nějakými defaults asi půjde taky výrazně zvětšit) a v tom, že s externím proxy serverem je vlastně mezi všemi prohlížeči sdílená (což je ale jedno, pokud používáte stále jeden prohlížeč). Naopak ale s vlastní keší můžou browsery udržovat soubory nejen v původní stažené podobě, ale už předzpracované, např. css nebo javascript uložený ve formě, která se rychleji načte a použije.
    (Pokud budete porovnávat, nemačkejte v browseru Reload – to stáhne všechny soubory znova. Potvrzení stejné url v adresním řádku stáhne jen to, co se změnilo.)

    • avatar
      12. 11. 2010 (10:58)
      Trvalý odkaz

      Jen upřesním, že Pismo je 400 MHz G3 a Cache leží na SSD PATA disku, takže jeho zapojení načítání stránek skutečně urychluje. Změřeno, ověřeno…

      Ale v celém článku píšu, že nejde vůbec o rychlost a o tu se nesnažíme – jde o úsporu datového objemu v případě, že máte FUP nebo často používáte mobilní připojení…

  • avatar
    12. 11. 2010 (10:47)
    Trvalý odkaz

    „6. pokud používáte Facebook, nezapomeňte zadat text *faceboook.com (včetně hvězdičky) do políčka Vyřadit nastavení proxy pro tyto hostitele a domény,“
    Proč? Je to proto, že stránky facebooku se často mění a Squid by vracel zastaralý obsah…? A co ty ostatní často se měnící stránky… Pokud keš v prohlížeči navíc vypnete, tak načtení facebooku bude trvat naopak o hodně delší dobu než bez squidu.

    „Ano, dalo by se namítnout, že přece vlastní cache mají také webové prohlížeče. Mají, ale ta je často velmi pomalá a neefektivní – profesionální proxy server léta optimalizovaný na výkon zkrátka podává diametrálně odlišné výsledky.“
    Squid je léta opensource. Kdyby měl nějaké výrazně lepší „kešovací algoritmy“, tak nic nebrání safari nebo firefoxu je převzít.

    Umí Squid kešovat i https spojení?

    • avatar
      12. 11. 2010 (10:55)
      Trvalý odkaz

      Ne, proto to neni. Facebook proste prestane fungovat uplne – jeho
      ajaxove soucasti na pozadi proxyserverem proste neprojdou…

  • avatar
    12. 11. 2010 (10:47)
    Trvalý odkaz

    „6. pokud používáte Facebook, nezapomeňte zadat text *faceboook.com (včetně hvězdičky) do políčka Vyřadit nastavení proxy pro tyto hostitele a domény,“
    Proč? Je to proto, že stránky facebooku se často mění a Squid by vracel zastaralý obsah…? A co ty ostatní často se měnící stránky… Pokud keš v prohlížeči navíc vypnete, tak načtení facebooku bude trvat naopak o hodně delší dobu než bez squidu.

    „Ano, dalo by se namítnout, že přece vlastní cache mají také webové prohlížeče. Mají, ale ta je často velmi pomalá a neefektivní – profesionální proxy server léta optimalizovaný na výkon zkrátka podává diametrálně odlišné výsledky.“
    Squid je léta opensource. Kdyby měl nějaké výrazně lepší „kešovací algoritmy“, tak nic nebrání safari nebo firefoxu je převzít.

    Umí Squid kešovat i https spojení?

  • avatar
    12. 11. 2010 (11:01)
    Trvalý odkaz

    Squid má sice „kešovat“, ale já jej využívám pro omezení přístupu na Internet :-) V pracovní době se na Facebook neleze :-) Kdo přijde před, nebo po pracovní době, ten může, ale v definovanou pracovní dobu se mu jenom zobrazí stránka „sorry“ a je po FB a podobných :-)

    Nevím, jestli to jde na MAC OS, ale pokud běží Squid na Linuxu a jsou na tom stroji zároveň iptables, pak stačí nastavit, že veškerá http komunikace má jít na port Squidu, který se tím stane transparentní proxy a na žádném jiném počítači v síti už není třeba nic nastavovat. Takže pokud máte proxy doma a přijde návštěva se svým strojem, automaticky jede přes proxy…

  • avatar
    13. 11. 2010 (13:41)
    Trvalý odkaz

    Existuje nějaká systémová cesta jak Safari vypnout jeho cache, aby se na cachování používal pouze Squid? A nebo nějaká nesystémová, ale trvale funkční?

  • avatar
    16. 11. 2010 (23:15)
    Trvalý odkaz

    Super věc, určitě se hodí. Mám jen jeden problém – nejde mi YouTube. Přidal jsem i „*youtube.com“ do bypass proxy setting for these Hosts and Domain, ale pořád nic. YouTube se jakoby pořád načítá, ale ve skutečnosti se nic neděje a stránka se nenačte. Nevíte, čím to může být?

  • avatar
    16. 11. 2010 (23:15)
    Trvalý odkaz

    Super věc, určitě se hodí. Mám jen jeden problém – nejde mi YouTube. Přidal jsem i „*youtube.com“ do bypass proxy setting for these Hosts and Domain, ale pořád nic. YouTube se jakoby pořád načítá, ale ve skutečnosti se nic neděje a stránka se nenačte. Nevíte, čím to může být?

Komentáře nejsou povoleny.