Autor Zpráva
LastHunter
Profil *
Dobrý den,
právě vytvářím novou verzi jednoho většího portálu a hodilo by se mi cacheování výstupu.
Jelikož v cacích jsem absolutní nováček, nevím jak na to.
Pokud jsem to správně pochopil, jedná se o zmenšení zátěže především na MySQL server, protože výsledky dotazů se např. 1x za minutu uloží do cache a celou tu minutu se budou výstupy stránek brát odtamtud a MySQL bude "umírat nudou".

Co jsem provedl:
V PHP napsal do jednoho z includovaných skriptů (před začátek jakéhokoli výstupu):
header("Cache-Control: store, cache");
header("Pragma: cache");


Do .htaccess jsem napsal:
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault A60

  ExpiresByType image/gif A3600
  ExpiresByType image/jpg A3600
  ExpiresByType image/jpeg A3600
  ExpiresByType image/png A3600

  ExpiresByType text/css A3600
  ExpiresByType text/javascript A3600
  
  ExpiresByType application/x-shockwave-flash A3600

  ExpiresByType text/html A60
</IfModule>


(z jednotlivých řádků je doufám patrné, jak často chci jednotlivé prvky aktualizovat)

Nyní by podle mé teorie, pokud nechám danou stránku vypsat time() a zmáčknu F5, daný údaj by se neměl aktualizovat, aktualizovaný by se měl ukázat až při prvním reloadnutí po minutě od prvního přístupu. Mám pravdu? Jenomže aktuální time() se ukazuje pokaždé. To samé s výpisy z DB - zobrazím si "cachovanou" stránku, změním třeba nadpis nějakého článku, zmáčknu F5 na cachované stránce a nový nadpis se ukáže hned, ne až za minutu.

Kde dělám chybu? Díky :)
Leo
Profil
Podle me je F5 neco jinyho nez proste vyzadani stranky, prohlizec pri F5 posila uz v pozadavku hlavicky, ktere moznost pouziti kesovane verze omezuji. Pokud mate Firefox, kouknete se na komunikaci klient-server pres doplnek Live HTTP Headers, Leo
djlj
Profil
LastHunter
To, cos popsal, je cachování na straně uživatele. Pro cachování na straně serveru potřebuješ vhodná rozšíření do apache a v mysql se dá přímo nastavit, jak dlouho se mají výsledky dotazů držet v paměti.
LastHunter
Profil *
Diky, v tom F5 to cele bylo :)
BTW: Opravdu se tim ulehci mysql serveru? A zalezi na tom, jestli je mezi klientem a serverem nejaka proxy cache nebo jestli ma klient vypnutou cache v prohlizeci? Pochopil jsem to spravne, ze vlastni cache ma uz sam HTTP server (aby se zaridilo to, ze vsichni uzivatele uvidi to same) ? Nebo nic takoveho neni a pokud ma uzivatel vypnutou cache v prohlizeci a neni na ceste zadna proxy, tak se stranky necachuji a uzivatelovi se generuje pokazde nova verze?
LastHunter
Profil *
djlj: Aha, diky, tim odpovidas na moje otazky v prispevku pod tebou :) Mohl bys mi nahodit nektera klicova slova pro Google, podle ceho mam hledat a zprovoznovat? Na vyraz web cache jsem nachazel pouze tyto veci okolo HTTP hlavicek, tudiz jsem si myslel, ze to je jedina varianta.
Leo
Profil
Webserver cache mit muze, ale casto nema, neni to vychozi stav. Pak jeste muzete udelat kesovani do souboru vy sam, v PHP napriklad pres cache-lite, nedavno se to tady resilo, Leo
LastHunter
Profil *
U Apache je to mod_disk_cache a mod_mem_cache nebo něco úplně jiného?
LastHunter
Profil *
Takže už jsem si našel, že stačí mod_cache a mod_mem_cache. Jak se ovládá, co to bude cachovat a co ne? Čte to HTTP hlavičky nebo je to potřeba ovládat nějak jinak? (co se bude cacheovat do paměti serveru?)
Leo
Profil
Netusim, nikdy jsou to nenastavoval, nicmene jeste to souvisi s mod_proxy, Leo

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0