Autor Zpráva
seph
Profil *
Zdravím všechny, co byli zaujati tímto tématem.

Nedávno jsem začal využívat firefoxí zlepšovák Firebug+YSlow a zjistil jsem, že bych si měl pohrát s kešování a nastavit ETagy. Tak jsem tedy začal a ve spolupráci s google hledal jak, kde, proč a co. Něco jsem našel (kousek tady a kousek na W3), ale moc mi to tedy nepomohlo, protože YSlow mi pořád vyčítá, že nemám nastavené ETags a dobu platnosti - expire headers. Nastavuji to tímto způsobem:

<?php
 $offset = 1;
 $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 header("Cache-Control: must-revalidate");
 Header($ExpStr);
 header ('ETag: \"\"');
 header('Content-type: text/css; charset: iso-8859-2');
 header ('Cache-control: must-revalidate ');
 Header($ExpStr);
 header ('ETag: \"\"');
 header('Content-type: image;');
 header ('Cache-control: must-revalidate');
 Header($ExpStr);
 header ('ETag: \"\"');
?>


Neříkám jak děsně moc tomu rozumím, ale mělo by to být víceméně správně. Děkuji za každý přínosný příspěvek v diskuzi.
seph
Profil *
už je to v pořádku, stačilo smazat poslední čtyři řádky od koncového tagu "?>". Konkrétně tyto:

header('Content-type: image;'); 
header ('Cache-control: must-revalidate'); 
Header($ExpStr); 
header ('ETag: \"\"');
DoubleThink
Profil *
ETag je unikátní otisk dokumentu. Jaký smysl má jej uvádět s prázdnou hodnotou?
Nox
Profil
Do htaccess:

FileETag MTime Size
seph
Profil *
DoubleThink:
ETag je unikátní otisk dokumentu. Jaký smysl má jej uvádět s prázdnou hodnotou?

Pouze kvůli kosmetice. YSlow snižuje o něco hodnocení

A jeden dodatek:

Zjistil jsem, jak se to chová: když dám např. "header('Content-type: image;');" jako poslední, bere se celý soubor jako kdyby to byl obrázek. Což je sice fajn z důvodu docela podvodného zlepšení hodnocení od YSlow a také se pak nepřidají do stránek všelijaké ty panely a reklamy, jak je tomu u freehostingů.

ALE stále nevím jak nastavit hlavičky k souborům .css, .js a obrázkům, můžete mi s tím prosím poradit? Přístup do htaccess pravděpodobně nebude možný.
ninja
Profil
seph: Jaký smysl má obelhávat YSlow?! Nestačí když si v duchu řeknete, že vaše stránky jsou nejlepší a nejrychlejší?
seph
Profil *
ninja:
Jaký smysl má obelhávat YSlow?!

Prostě si musím něco kompenzovat no :)

Ojojoj, teď jsem si všiml, že jsem diskuzi vytvořil mimo mísu - v grafice. Pardon
DoubleThink
Profil *
ninja:
Nestačí když si v duchu řeknete, že vaše stránky jsou nejlepší a nejrychlejší?
ETag, na rozdíl třeba od validity, význam má. Prohlížeče jej používají pro kontrolu čerstvosti své keše (ptají se pak serveru, jestli je ETag pořád stejný hlavičkou If-None-Match). Server pak může šetřit výkon i traffic obou stran a odpovědět 304 Not Modified.
Pokud ovšem tady seph uvede jako ETag nějakou blbost, může se dočkat akorát zmateného chování keší.
seph
Profil *
DoubleThink

O této kontrolu jsem si přečetl na w3 a na developer.yahoo, ale jsem neviděl praktický příklad, pouze kód headru. Nepochopil jsem jak se s tím pracuje ani jak zadat pro odlišné entity jiné tagy :(
ninja
Profil
DoubleThink: ETag samozřejmě význam má a jeho ignorování je chyba, nicméně nastavovat jej na nasmyslné hodnoty je horší než jej vůbec nepoužívat.

seph: Pokud netušíte proč a jak se ETag používá, radši si jej nechte být, protože pravděpodobně naděláte více škody než užitku.
Lopik
Profil *
Kam se zapisuji tyto hodnoty ? zkousel jsem to do head ale udelalo to paseku ... diky za odpoved
<?php
 $offset = 1;
 $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 header("Cache-Control: must-revalidate");
 Header($ExpStr);
?>
ninja
Profil
Lopik: Úplně na začátek PHP souboru, ješte před jakýkoliv jiným výstupem.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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