HTTP: generálása ETag Fejes

szavazat
24

Hogyan hozhatok létre egy ETag HTTP fejléc egy erőforrás fájl?

A kérdést 07/08/2008 09:45
a forrás felhasználó
Más nyelveken...                            


6 válasz

szavazat
17

Mindaddig, amíg ez megváltozik, amikor az erőforrás ábrázolás változik, hogyan készítsen teljesen rajtad múlik.

Meg kell próbálnia, hogy ez megvalósuljon, oly módon, hogy ezen felül:

  1. nem követeli meg, hogy újra kiszámolja azt minden feltételes GET, és
  2. nem változik, ha a forrás tartalom nem változott

Hash-ekkel tartalom okozhatja, hogy nem a # 1, ha nem tárolja a kiszámított hash együtt a fájlokat.

Segítségével inode okozhat, hogy nem # 2 ha átrendezni a fájlrendszert, vagy szolgáltat tartalmat több szerver.

Az egyik mechanizmus, amely a munka az, hogy valami teljesen tartalom függ például egy SHA-1 hash vagy egy változata húr, kiszámításra és tárolásra egyszer, amikor az erőforrás tartalma változik.

Válaszolt 09/08/2008 14:50
a forrás felhasználó

szavazat
16

Az ETAG tetszőleges karakterlánc, amely a szerver küld az ügyfélnek, hogy az ügyfél küld vissza a szerver a következő alkalommal a fájl kérik.

Az ETAG legyen kiszámítható a szerver alapú fájl. Valahogy úgy, mint egy ellenőrző, de lehet, hogy nem akar checksum minden fájl elküldené.

 server                client

        <------------- request file foo

 file foo etag: "xyz"  -------->

        <------------- request file foo
                       etag: "xyz" (what the server just sent)

 (the etag is the same, so the server can send a 304)

Építettem fel egy string „formátumú fájlt inode szám / dátumbélyeg / fájlméret”. Tehát, ha egy fájl megváltozott a kiszolgálón, miután azt szolgálja ki az ügyfél, az újonnan regenerálódott ETAG sem fog megfelelni, ha az ügyfél újra kéri.

char * mketag (char * s, struct stat * sb)
{
    sprintf (s, "% d /% d /% d", SB> st_ino, SB> st_mtime, SB> st_size);
    visszatér s;
}
Válaszolt 07/08/2008 09:57
a forrás felhasználó

szavazat
6

Honnan http://developer.yahoo.com/performance/rules.html#etags :

Alapállapotban Apache és az IIS beágyazni adatokat a ETag drámaian csökkenti az esélyeket az érvényességi vizsgálatot követő weboldalak több szerverrel.

...

Ha nem kihasználva a rugalmas validációs modell ETags biztosítja, hogy jobb, hogy csak vegye ki a ETag összesen.

Válaszolt 07/08/2008 11:13
a forrás felhasználó

szavazat
2

Hogyan kell létrehozni az alapértelmezett Apache ETAG a bash

for file in *; do printf "%x-%x-%x\t$file\n" `stat -c%i $file` `stat -c%s $file` $((`stat -c%Y $file`*1000000)) ; done

Még ha kerestem valamit, pontosan olyan, mint az ETAG (a böngésző kér egy fájlt csak akkor, ha megváltozott a kiszolgálón), soha nem dolgozott, és én végül egy GET trükk (hozzátéve időbélyeggel a get érv a js fájlokat ).

Válaszolt 05/09/2011 13:38
a forrás felhasználó

szavazat
1

Ive segítségével Adler-32, mint egy html linket shortener. Im nem biztos, hogy ez egy jó ötlet, de eddig én kikötõ észre ismétlődést. Lehet, hogy működik, mint egy ETAG generátort. És meg kell gyorsabb, majd próbálja hash titkosítással program, mint a sha, de én kikötõ igazolta ezt. A kód, amit használok:

 shortlink = str(hex(zlib.adler32(link)+(2**32-1)/2))[2:-1]
Válaszolt 27/12/2012 16:58
a forrás felhasználó

szavazat
0

Azt javasoljuk, hogy ne használja őket, és megy a legutóbbi módosítás fejlécek helyett.

Askapache egy hasznos cikket a. (Mivel nem elég sok mindent látszik!)

http://www.askapache.com/htaccess/apache-speed-etags.html

Válaszolt 19/09/2008 23:31
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more