Frage

Es gibt viele Artikel im Web, in denen Details ausführlich sind, warum Sie könnten nicht Sie möchten das Standard-Inode-Mime-Größe-Format von Apache für ETAGs verwenden.

Aber ich muss noch etwas über das gelesen haben, was die Einbeziehung von Inode für Apache in erster Linie motiviert haben könnte. Auf den ersten Blick scheint es nur nützlich zu sein, wenn man in der Lage sein muss, zwischen Oktett-Octet-Faksimiles derselben Ressource zu unterscheiden, aber dies steht sicherlich dem Zweck von ETAGs wider.

Die Autoren von Apache sind nicht bekannt für ihre schlampige Übergabe der Internetstandards, daher habe ich das Gefühl, dass ich etwas fehlen muss. Kann jemand näher erläutern?

BEARBEITEN: Ich frage dies hier und nicht auf serverfault.com, da ich einen Webserver implementiere, anstatt einen zu verwalten. Um mehr darüber zu erfahren, warum es eine schlechte Idee ist, siehe zB. hier oder hier. Alle diese Artikel empfehlen dasselbe: Entfernen Sie Inodes von Ihren ETAGs. Die Frage ist, gibt es einen Vorteil, dass sie dort sind, da sie dort sind?

War es hilfreich?

Lösung

Es scheint, als könnte man leicht durch eine falsche Vermutung für den allgemeinen Fall oder durch die Vorzugsreuung gegenüber der Leistung standardmäßig tun, wann immer ein Zweifel vorhanden ist.

Gestatten Sie mir, eine Geschichte darüber zu erfassen, wie es möglicherweise gegangen sein könnte:

Sie entscheiden früh, dass ein Hash/Checkum auf dem Inhalt aus Leistungsgründen eine schlechte Idee ist. "Wer weiß, wie groß die Datei sein könnte? Wir können diese nicht ständig neu berechnen ..." Sie entscheiden, dass Größe und Datum Sie ziemlich nahe kommen.

"Aber warte", sagt Person A, "Nichts garantiert, dass Sie keine Kollision der Dateigröße haben. Tatsächlich gibt es Fälle wie Firmware -Binärdateien, wenn die Dateigröße immer gleich ist und es durchaus möglich ist, dass mehrere sind Gleichzeitig von einer Entwicklungsmaschine hochgeladen, daher sind diese nicht ausreichend, um zwischen verschiedenen Inhalten zu unterscheiden. "

Person B: "Hmm, guter Punkt. Wir brauchen etwas, das intrinsisch mit dem Inhalt der Datei verbunden ist. Etwas, das mit der modifizierten Zeit verbunden ist, kann Ihnen sicher sagen, ob es sich um den gleichen Inhalt handelt."

Person A: "Was ist mit dem Inode? Nun, auch wenn sie die Dateien umbenannt (vielleicht ändern sie" empfohlen "beispielsweise in eine andere Datei), funktioniert der Standard -ETAG gut!"

Person B: "Ich weiß nicht, Inode scheint ein bisschen gefährlich zu sein."

Person A: "Nun, was wäre besser?"

Person B: "Ja, gute Frage. Ich denke, ich kann nicht denken, was speziell daran falsch ist, ich habe nur ein allgemeines schlechtes Gefühl dafür."

Person A: "Aber zumindest garantiert es, dass Sie eine neue herunterladen, wenn es sich geändert hat. Das Schlimmste ist, dass Sie öfter herunterladen als Sie brauchen, und jeder, der weiß, dass sie sich keine Sorgen machen müssen, kann sich einfach drehen es aus. "

Person B: "Ja, das macht Sinn. In den meisten Fällen ist es wahrscheinlich in Ordnung, und es scheint besser zu sein als die einfachen Alternativen."

Haftungsausschluss: Ich habe kein Insider -Wissen darüber, was die Apache -Implementierer hätte denken können. Dies alles ist nur handwellenes Erraten und versucht, eine plausible Geschichte zu erfinden. Aber ich habe so etwas oft oft genug gesehen.

Sie wissen nie, woran Sie nicht gedacht haben (in diesem Fall, dass redundante, ladenausgleichende Server, die dieselben Dateien bedienen, typischer waren, als sich um Größen+Zeitkollisionen sorgen zu müssen). Der Load Balancer ist nicht Teil von Apache, was es einfacher macht, eine solche Kontrolle zu machen.

Außerdem ist der Fehlermodus hier, dass Sie den Cache (nicht, dass Sie falsche Daten erhalten haben), was wohl besser, wenn auch nervig ist, nicht perfekt nutzte. Was darauf hindeutet, dass selbst wenn sie daran denken, dass sie vernünftigerweise jemandem mit genügend Interesse annehmen könnten, einen Ladungsbalancer einzurichten, auch wenn er seine Konfigurationsdetails eingeht.

PS: Es geht nicht um Standards. Nichts gibt an, wie Sie den ETAG berechnen sollten, nur dass es ausreichen sollte, um festzustellen, ob sich der Inhalt mit hoher Wahrscheinlichkeit geändert hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top