Domanda

Ci sono un sacco di articoli sul web in dettaglio il motivo per cui si potrebbe non voler utilizzare il formato inode-mtime-dimensione predefinita di Apache per ETags.

Ma devo ancora leggere qualcosa su quello che potrebbe essere motivato l'inclusione di inode per Apache, in primo luogo. Sulla faccia di esso, sembra utile solo se si ha la necessità di essere in grado di distinguere tra ottetto-per-ottetto facsimili della stessa risorsa, ma questo è sicuramente in contrasto con lo scopo di ETags.

Gli autori di Apache non sono noti per la loro consegna sciatta di standard di internet, così mi sento io devo essere perso qualcosa. Chiunque può elaborare?

EDIT: Lo chiedo qui piuttosto che su ServerFault.com perché sto implementare un server web, piuttosto che la somministrazione di uno. Per saperne di più perché è una cattiva idea, vedi per esempio qui o qui . Tutti questi oggetti raccomandano la stessa cosa: togliere inode dalle vostre etags. La domanda è, c'è qualche vantaggio di sorta per loro essere lì?

È stato utile?

Soluzione

Sembra che il genere di cosa si potrebbe facilmente fare da una supposizione sbagliata per quello che è il caso comune, oppure preferendo la correttezza rispetto alle prestazioni, per impostazione predefinita, ogni volta che c'è uno straccio di dubbio.

Mi permetta di inventare una storia su come potrebbe essere andata:

Sono loro a decidere presto che un hash / checksum sui contenuti è una cattiva idea per motivi di prestazioni. "Chi lo sa quanto è grande il file potrebbe essere? Non siamo in grado di calcolare quelli per tutto il tempo ..." Così decidono dimensione e la data farti molto vicino.

"Ma aspetta," la persona A dice, "nulla garantisce non si dispone di una collisione dimensione del file. In realtà, ci sono casi, come ad esempio i binari del firmware, quando la dimensione del file è sempre lo stesso, ed è del tutto possibile che molti vengono caricati da una macchina dev, allo stesso tempo, in modo da questi non sono sufficienti per distinguere tra diversi contenuti ".

La persona B: ".. Hmm, buon punto Abbiamo bisogno di qualcosa che è intrinsecamente legato al contenuto del file Qualcosa che, insieme con l'ora di modifica, si può dire con certezza se è lo stesso contenuto"

Persona A: "Che dire nell'inode Ora, anche se rinominare i file (forse cambiano 'consigliato'! In un file diverso, ad esempio), l'ETAG predefinita funzionerà benissimo"

La persona B: "Non lo so, inode sembra un po 'pericoloso".

Persona A: "Be ', che sarebbe meglio"

La persona B: ". Sì, buona domanda Credo che non riesco a pensare che cosa specificamente è sbagliato, ho solo una brutta sensazione generale riguardo"

Persona A: ". Ma almeno ti garantisce di scaricare uno nuovo se è cambiato La cosa peggiore che succede è che si scarica più spesso di quanto è necessario, e chi sa che non c'è bisogno di preoccuparsi può solo spegnerlo. "

La persona B: ". Sì, che abbia un senso Probabilmente è bene per la maggior parte dei casi, e sembra meglio rispetto alle alternative easy"

Disclaimer: non ho alcuna conoscenza all'interno di quello che gli esecutori di Apache avrebbe potuto essere il pensiero. Questo è tutto solo a mano ondulato indovinare, e cercando di inventare una storia plausibile. Ma ho sicuramente visto questo genere di cose capita abbastanza spesso.

Non si sa mai che cosa era che non hai pensato di (in questo caso, che i server con bilanciamento del carico ridondanti che servono gli stessi file era più tipico di doversi preoccupare di dimensioni + tempo di collisioni). Il bilanciamento del carico non è parte di Apache, il che rende più facile fare una tale svista.

Inoltre, la modalità di guasto qui è che non hai fatto uso in perfetta efficienza della cache (non che avete ottenuto dati errati), che è probabilmente meglio, anche se fastidioso. Il che suggerisce che anche se hanno fatto pensare ad esso, si potrebbe ragionevolmente supporre qualcuno con abbastanza interesse per impostare un bilanciamento del carico sarebbe anche ok con messa a punto i loro dettagli di configurazione.

PS: Non si tratta di norme. Niente specifica come si dovrebbe calcolare l'ETAG, solo che dovrebbe essere sufficiente per dire se i contenuti sono cambiati, con alta probabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top