Autor Zpráva
Destiny_1
Profil
Dobrý den, přečetl jsem si pár stránek o cachování, ale stejně to pořád tak úplně nechápu.
Abych vysvětlil problém. Mám tabulku pouze s html kódem. Informace z téhle tabulky načítám do souboru sablona.php.
A pak si pouze volám tenhle soubor do ostatních souborů. Například v index.php a prihlaseni.php mám include 'sablona.php';
Moje otázka zní, kdybych cachoval soubor sablona.php, tak se bude tak či tak načítat při každém kliknutí na stránku např. index.php tabulka s html kódem?
Kubo2
Profil
Destiny_1:
Áno, bude, pretože cacheovanie vôbec nesúvisí s DB, ale s komunikáciou medzi tvojím serverom a tvojím návštevníkom.
Totižto, funguje to asi tak, že ak súbor má nastavené cacheovanie, prehliadač (alebo proxy) si súbor uloží a až do doby expirácie ho bude používať namiesto originálu, sťahovaného zo servera. To spôsobí menšiu záťaž tvojho servera zbytočnými požiadavkami a podstatne kratšiu dobu načítania tvojich stránok tvojmu návštevníkovi.
Tým vlastne dospeješ k záveru, že includovaný súbor sa nedá cachovať, pretože cachovanie funguje len pri reálnych HTTP požiadavkoch (vkladanie súborov PHP skriptov rozhodne nejde cez HTTP, pretože by sa vložil iba výsledok) a zároveň k ďaľšiemu záveru, že HTML kód bude z databázovej tabuľky vybraný iba za tých okolností, že bude súbor sťahovaný zo serveru, a nie iba lokálna kópia z kešu (cache).
Destiny_1
Profil
No ale wedos nedávno napsal tohle:
K čemu je cachování?
Většina stránek na webu (titulní stránka, články) je v podstatě statická - příliš se nemění, všichni návštěvníci vidí stejný obsah. Když se tedy 1000 lidí podívá na stejnou stránku, tak WordPress všech těchto 1000 požadavků složitě zpracovává, vykonají se desítky tisíc řádku kódu PHP, provedou se tisíce či desítky tisíc dotazů do databáze. A přesto výsledek je vždy stejný.

Při tzv. cachování se sestavení stránky provede pouze jednou a celý výsledek se uloží jako celý hotový HTML soubor. Při dalších požadavcích se návštěvníkovi již posílá pouze tento hotový HTML soubor a již to vůbec nemusí jít přes PHP. Zrychlení může být 10-30 násobné!

Při použití cachování budou tedy vaše stránky výrazně rychlejší a náš server bude výrazně méně zatížen.
Kubo2
Profil
Destiny_1:
Prečítaj si ešte raz a dôkladne to, čo som napísal v [#2] a potom znovu to, čo napísal WEDOS. Potom nad tým trocha porozmýšľaj a prídeš na to, že oba texty v podstate hovoria to isté a dospievajú k istým záverom.


Pre viac informácií o webovom cacheovaní ti odporúčam preštudovať Kešovací návod pro autory webu a webmastery.
Destiny_1
Profil
Ano omlouvám se.
Tak potom se zeptám jinak. Kdybych v mojem případě cachoval soubor index.php budou se po každém kliknutí na stránku index.php načítat data z tabulky s html kódem?
Kubo2
Profil
Nie, ak ho budeš mať naozaj cacheovaný (->ten index.php), tak pri prvom požiadavku sa ti, ako napísal WEDOS, výstup uloží ako HTML súbor na nejakej proxy cache a pri ďaľších požiadavkoch na index.php sa ti bude posielať iba táto kópia.
Destiny_1
Profil
Díky
Promiňte že otravuji, ale ještě poslední otázka...kdyby byla možnost v souboru například index.php přidávat komentáře. Tak potom bych nemohl soubor index.php cachovat? Protože potom by se uživatelům zobrazovali staré komentáře. Nebo je možnost změnit expiraci cachování při novém vložení komentáře? Nebo, například cachovat pouze část stránky?
Kubo2
Profil
Destiny_1:
Neotravuješ, to v žiadnom prípade. Boli tu iné prípady, ktoré naozaj otravovali.
Cacheovať iba časť stránky nie je možné, ale nastaviť expiračnú dobu čili dobu platnosti cacheovaného súboru je. Napríklad táto diskusia mala ak si dobre spomínam už trošku dávnejšie expiračnú dobu hlavnej stránky tuším 3 sekundy.
Všeobecne, nastavuje sa to HTTP hlavičkou Expires.
Kajman
Profil
Destiny_1:

Cache nemusí být jen díky http hlavičce a Expires. Systém cachování může být i zapracován ve skriptech, které generují stránku nebo její část. Např. komentáře pod článkem se vygenerují skriptem a výsledek se i uloží do pomocného souboru, při příštím požadavku na článek se mohou komentáře vzít ze starého souboru, pokud existuje. Při jakékoliv úpravě (přidání, editace, smazání) komentáře stačí zneplatnit (např. smazat) ty cachovací soubory, které se tím ovlivnily.

Ukázka implementace v Nette frameworku.
Destiny_1
Profil
Díky za odpověď. V jedné diskuzi jsem se dočetl o Pearl knihovně na cachování, ale to má čas. Moje stránky nemají tolik čtenářů.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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