Autor Zpráva
rad
Profil *
Chtel jsem se zeptat co je to presne eTag a jak bych ho mel konfigurovat ?
Davex
Profil
ETag je volitelná položka v HTTP hlavičce, kterou může posílat server k případnému rozlišení, zda se obsah na požadovaném URL od posledně změnil či nikoliv. Často se ke zjištění změny používá čas z hlavičky Last-Modified, takže je ve většině případů ETag zbytečný.

Proč bys ho chtěl konfigurovat?
rad
Profil *
no nechtel bych ho modifikovat zda se ze server zadny eTag neposila tak bych ho spis chtel povolit
rad
Profil *
taky jsem se chtel zeptat kdyz v hlavicce pozadavku mam toto : Accept-Language cs,en-us;q=0.7,en;q=0.3
tak potom kdyz je stranka v jinem jazyce bude to mit nejaky vliv na vyhledavani ?
rad
Profil *
ok omlouvam se uz to asi chapu je jasne ze etag se neprirazuje strance ale napriklad obrazkum nebo css ...
a hlavicka pozadavku si myslim ze to bude asi tim ze pouzivam firefox v cestine diky
Davex
Profil
rad:
server zadny eTag neposila tak bych ho spis chtel povolit
etag se neprirazuje strance ale napriklad obrazkum nebo css
Já ho naopak všem souborům vypínám konfigurační volbou Apache:
FileETag None
Dle mého názoru má ETag smysl pouze pro dynamické stránky, když není jasný čas poslední změny a změna se dá zjistit podle ETagu v keši nebo v databázi.

hlavicka pozadavku si myslim ze to bude asi tim ze pouzivam firefox v cestine
Prohlížeč si hlavičkou Accept-Language říká o stránku v některém uživateli preferovaném jazyce. Ve Firefoxu se nastavují v Nástroje » Možnosti » Obsah » Vybrat jazyky. Web musí automatický výběr jazyka podporovat.
DoubleThink
Profil *
Technicky je ETag otisk (hash). Většinou ne obsahu souboru, ale času jeho poslední úpravy, což jeho význam trochu devalvuje. Klienti se pak mohou dotazovat hlavičkou If-None-Match, jestli je otisk stále shodný. Pokud ano, server místo souboru odešle jen prázdný stav 304 Not Modified.

Stejně funguje i hlavička Last-Modified, kterou pak klient ověřuje dotazem If-Modified-Since.

Zajímavá prasárna je použít ETag místo cookie jako unikátní tracking-identifikátor.

Davex:
Já ho naopak všem souborům vypínám konfigurační volbou Apache:
Celkem nevidím důvod - jak jsem psal, hash se nepočítá z obsahu, zátěž tu žádná nevzniká. Připravíš tím klienty o jednu (ze dvou) metod ověření čerstvosti cache-dat. Předpokládanou expiraci (Expires) je samozřejmě vhodné poslat taky.
rad
Profil *
reaguji na Davexe

Davex:
Já ho naopak všem souborům vypínám konfigurační volbou Apache:
proc ?

jeste dynamicka stranka - to znamena stranka ktera se dynamicky meni v case ? takze vlastne vsechny stranky jako blog diskuze news atd atd .. ??
takze o pouziti eTag se stara server a komunikuje s prohlizecem navic se pouziva Last-Modified ..ok snad chapu
Leo
Profil
rad:
takze o pouziti eTag se stara server

U statických souborů ano, u php (např.) ne. Osobně dávám u dynamických stránek přednost ETagu před Last-Modified. Leo
Davex
Profil
rad:
Já ho naopak všem souborům vypínám konfigurační volbou Apache:
proc ?
Protože jsem průkopník a jdu proti proudu :-). Je to hlavně z toho důvodu, že když je kopie webu na jiném úložišti nebo na webserveru v jiné lokalitě, tak budou mít kopie stejného souboru různý ETag a při přepnutí se mohou zbytečně odesílat, přestože se nezměnily.
rad
Profil *
to Leo
a jak se da pro php soubory etag nastavit ?
to davex jasne chapu.. takze je lepsi posilat last modified jak to resis u php souboru ?

kazdopadne diky uz se mi to snad vyjasnuje
rad
Profil *
jak to tedy resit u dynalickych - souboru s php priponou ? jak to resite co posilate a jak ? nejak netusim kam bych mel umistit napriklad last modified do hlavicky ?
a co kdyz se soubor zmeni ? napriklad diskuze ...
rad
Profil *
nebo jinak jak nastavit eTag dynamickym strankam - souborum php ?
Davex
Profil
Obecně nestačí jen nastavit ETag, který by měl být jakýmsi otiskem obsahu (jak psal [#7] DoubleThink). Musí kolem toho být také nějaká další logika, když aplikace dostane od prohlížeče hlavičku If-None-Match, aby dokázala zjistit, zda se obsah změnil a má ho posílat nebo jen oznámit, že se nic nezměnilo. Bez toho to nemá smysl.
Leo
Profil
rad:
jak to tedy resit u dynalickych - souboru s php priponou ?

Musíte mít někde je každé stránce uložený aktuální ETag a ten při (podstatné) aktualizaci změnit. Leo
Leo
Profil
Osobně používám toto:

$etag = "\"6\"";
preg_match_all("/\"(.*)\"/U",stripslashes($_SERVER['HTTP_IF_NONE_MATCH']),$shody);
if ((in_array($etag,$shody[0]))or(in_array('"*"',$shody[0]))) {
header("HTTP/1.1 304 Not Modified");
header("ETag: $etag");
exit;
} else {
header("Cache-Control: must-revalidate,max-age=0");
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header("ETag: $etag");
}
[...nasleduje html...]

Leo

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0