Zadejte hledaný výraz...

Jak na cachovani

Jsem tu s dalším dotazem. :-)
Jsem ten typ, co se php a mysql naučil čtením z netu a beru to jako koníček.
Každopádně zkouším něco vytvořit a chtěl bych zkusit i cachovat.
Ale nikde jsem nenašel nic, kde bych cachování dobře pochopil.
Proto bych vás chtěl poprosit o pomoc.
Jestli si to dobře představuji, tak bych si nastavil načtení dat z databáze třeba jednou za hodinu, aby mi uživatel nespamoval databázi 100x za sekundu.
Ale vůbec nevím jak na to.
Předem moc dík:-)
9. 8. 2010 16:10:39
https://webtrh.cz/diskuse/jak-na-cachovani#reply540807
Jakub Truneček
verified
rating uzivatele
9. 8. 2010 17:12:06
Ahoj, předně jde o to, co vlastně chceš cachovat. Nebo tedy spíše na jaké úrovni.
Cachovat můžeš na úrovni databázové, ale také (což záleží na tom, kde to chceš použít) na úrovni výstupní. V případě webu tedy můžeš cachovat jak jsem řekl výsledky dotazů, nebo rovnou HTML výsledných stránek. Pro pochopení by ti mohl pomoci manuál od Zend Frameworku, konrétně Zend_Cache (http://framework.zend.com/manual/en/zend.cache.html) neříkám, že musíš použít zrovna Zend Framework, ale mohlo by ti to pomoci pro pochopení. Zdrojový kód k ZF je na jejich stránkách ke stažení, nebo se můžeš mrknout na SVN (http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Cache/), takže se rovnou můžeš podívat i na to, jak je to implementováno.
Doufám, že pomůž a přeji hodně nacachovaných dat ;)
9. 8. 2010 17:12:06
https://webtrh.cz/diskuse/jak-na-cachovani#reply540806
Rypi
verified
rating uzivatele
(13 hodnocení)
9. 8. 2010 17:13:31
musíš si z databáze načíst data a ty pak uložit (cachovat) do nějakého souboru. Nebo pak můžeš cachovat přímo celou vygenerovanou stránku. Místo toho, aby si normálně vypisoval text, tak si ho uložíš do souboru. a příštím při požadavku na zobrazení stránky jen načteš obsah toho souboru. Ale způsobů jak cachovat je hodně (co všechno, kam) a určitě ti tu někdo poradí něco konkrétněji.
9. 8. 2010 17:13:31
https://webtrh.cz/diskuse/jak-na-cachovani#reply540805
tohle je nejjednodussi cache knihovna, kterou jsem u sebe nasel:
class cache
{
public static function cache_filename ( $name )
{
return DOCROOT . "/_work/$name.cache";
}
//name has to be file-name compatible
public static function set ( $name, $value )
{
App :: atomic_put ( self :: cache_filename ( $name ), serialize ( $value ) );
}
//default cache-life is 1 hour
public static function get ( $name, $life_time = 3600 )
{
if ( (@filemtime ( $f = self :: cache_filename ( $name ) ) + $life_time) < time () )
return;
return @unserialize ( file_get_contents ( $f ) );
}
public static function invalidate ( $name )
{
App :: atomic_unlink ( self :: cache_filename ( $name ) );
}
}
App :: atomic_put si muzes nahradit prozatim treba za file_put_contents a atomic_unlink za unlink...
pouziva se pak treba takhle (cachovani hlavni stranky seznamu):
if ( !$seznam_homepage = cache :: get ( $cache_key = "seznam_cache_key" ) )
cache :: set ( $cache_key, $seznam_homepage = file_get_contents ( "http://seznam.cz" ) );
//bude vracet hodinu stejnej vysledek...
echo $seznam_homepage;
slozitejsi implementace pak umi treba pouzit apc, memcache a podobne knihovny, ktere jsou primo soucasti php (a timpadem je to rychlejsi nez samotne soubory)
9. 8. 2010 20:43:48
https://webtrh.cz/diskuse/jak-na-cachovani#reply540804
Nejjednodušeji (podle mě) je využít Smarty. Vlastně tím zabíjím 2 mouchy jednou ranou.
1) šablonovací systém
2) cachování.
Kód vypadá nějak takto
Velice jednoduché, a smarty mohu jen doporučit :)
9. 8. 2010 21:30:18
https://webtrh.cz/diskuse/jak-na-cachovani#reply540803
hm
verified
rating uzivatele
(20 hodnocení)
10. 8. 2010 01:49:43
Ja smarty rozhodne nedoporucuji, nechapu proc v interpretovanem jazyce pouzivat dalsi interpretovany jazyk ! ano, cahcovani ztratu vykonu zabije, ale i tak - proc se sakra ucit dalsi syntaxi kdyz lze vyuzit "cisty" php kod ? :)
ke cachovani lze dodat snad jen - jde o to co chces cahcovat, obecne bych doporucil promenne a jine veic ktere potrebujes nacachovat proste jednoduse ukladat do souboru (praic se soubory snad znas) a porovnavat cas vytvoreni souboru s casem expirace cache... pokud expirovalo, natahaji se vsechny data znovu, soubor se preulozi na novou verzi a jede se od zacatku :) pokud neexpirovalo, nactou se data rychle prectenim souboru... samozrejme existuji i lepsi moznosti jako cahcovat do pameti (treba pomoci APC nebo memory uloziste v mysql), to am ale i svoje nevyhody, cahcovani do souboru je teoreticky to nejjednodussi :)
10. 8. 2010 01:49:43
https://webtrh.cz/diskuse/jak-na-cachovani#reply540802
Ja smarty rozhodne nedoporucuji, nechapu proc v interpretovanem jazyce pouzivat dalsi interpretovany jazyk ! ano, cahcovani ztratu vykonu zabije, ale i tak - proc se sakra ucit dalsi syntaxi kdyz lze vyuzit "cisty" php kod ? :)
Nebudu se přít o tom, zda smárty ano nebo ne. To nechť si rozhodne tazatel.
Otázka byla "jak cachovat". Nabídl jsem jedno z nejjednodušších řešení a napsal jsem ho na 3 řádky. S tím ukládáním do DB a ověřováním platnosti se na 3 řádky stopro nevejdeš. Tady to smarty udělají za tebe.
Pokud smarty ne, spolehl bych se na nějaký framework. Rozhodně si nepsat cachování sám.
10. 8. 2010 10:02:42
https://webtrh.cz/diskuse/jak-na-cachovani#reply540801
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
10. 8. 2010 10:57:08
Díky všem, dal jsem vám reputaci.
Po tom co jsem si přečetl, přemýšlím nad tím, jestli pro mne cachovat má smysl. Na stránku mi v průměru připadá 1-2 mysql dotazy.
A jestli server odešle jednou data ze souboru, nebo dvakrát data z databáze až tak výkon nezhorší, nebo se pletu? :-)
10. 8. 2010 10:57:08
https://webtrh.cz/diskuse/jak-na-cachovani#reply540800
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
10. 8. 2010 11:55:33
zhorsi - databaze musi hledat, soubor je pevne danej (klicem), ty data jenom vezmes a supnes rovnou ke klientovi - navic sql server byva na svem stroji, takze dalsi vykon navic by padl na komunikaci mezi sql a apachem
pokud porad ctes, cachovani vyrazne pomuze
10. 8. 2010 11:55:33
https://webtrh.cz/diskuse/jak-na-cachovani#reply540799
pitrsonek
verified
rating uzivatele
(12 hodnocení)
10. 8. 2010 11:58:07
Ahoj podívej se na knihovnu: http://pear.php.net/package/Cache_Lite/redirected
Návod: http://www.weberdev.com/ViewArticle/Caching-With-PHP-Cache_Lite
Knihoven atd. pro cachování je na netu více.
10. 8. 2010 11:58:07
https://webtrh.cz/diskuse/jak-na-cachovani#reply540798
hm
verified
rating uzivatele
(20 hodnocení)
10. 8. 2010 13:35:10
Napsal jvic;551204
Nebudu se přít o tom, zda smárty ano nebo ne. To nechť si rozhodne tazatel.
Otázka byla "jak cachovat". Nabídl jsem jedno z nejjednodušších řešení a napsal jsem ho na 3 řádky. S tím ukládáním do DB a ověřováním platnosti se na 3 řádky stopro nevejdeš. Tady to smarty udělají za tebe.
Pokud smarty ne, spolehl bych se na nějaký framework. Rozhodně si nepsat cachování sám.
ne na tri ale zhurba na 7 :) i tak je to reseni prijatelne ;) porad ael souhlasim ze pouziti frameworku nebo hotove knihovny bude precijen lepsi
10. 8. 2010 13:35:10
https://webtrh.cz/diskuse/jak-na-cachovani#reply540797
gonchs
verified
rating uzivatele
10. 8. 2010 18:32:37
Jen pro přehled doplním, které (ty nejznámější) metody cachování vůbec existují:
  • cachování výstupního html, jako celé stránky
  • cachování jen části výstupu (třeba nákej výpis top zboží)
  • cachování výsledků dotazů databáze
  • "cachování" ve smyslu kompilace php do bajtového kódu
  • cachování na http úrovni (pomocí hlaviček)
Pak je ještě hezký způsob cachování pomocí reverse proxy (Varnish a spol), ale to už asi bude nad rozsah toho, na co ses ptal. A pokud máš možnost instalovat na server vlastní věci, tak bych rovnou zkusil využít jako uložiště operační paměť, místo disku.
10. 8. 2010 18:32:37
https://webtrh.cz/diskuse/jak-na-cachovani#reply540796
Jakub Truneček
verified
rating uzivatele
11. 8. 2010 17:56:47
Když už padla informace o Cachování do paměti. V nedávné době jsem některé projekty, s poměrně velkou návštěvností, předělával ze souborové cache na Memcached server a je to opravdu citelná změna, pro trochu advanced aplikace vřele doporučuji.
11. 8. 2010 17:56:47
https://webtrh.cz/diskuse/jak-na-cachovani#reply540795
Trunda: Kolik pageviews (pripadne kolik db queries/pageview) je velka navstevnost a kde to zacalo drhnout? Pripadne zkoumal jsi, kolik vykonu si vezme Memcache, kdyz bezi na stejnem stroji jako web server?
Dik.
12. 8. 2010 20:56:53
https://webtrh.cz/diskuse/jak-na-cachovani#reply540794
h4tori
verified
rating uzivatele
(15 hodnocení)
12. 8. 2010 21:58:51
Napsal pitrsonek;551269
Ahoj podívej se na knihovnu: http://pear.php.net/package/Cache_Lite/redirected
Návod: http://www.weberdev.com/ViewArticle/Caching-With-PHP-Cache_Lite
Knihoven atd. pro cachování je na netu více.
jj Cache_lite doporucuju, je velmi dobre udelane a snadno pouzitelne
12. 8. 2010 21:58:51
https://webtrh.cz/diskuse/jak-na-cachovani#reply540793
Pro odpověď se přihlašte.
Přihlásit