webentwicklung-frage-antwort-db.com.de

Was ist die maximale praktische TTL

Ich bin nur neugierig, was der maximale praktische TTL Wert für einen A-Eintrag ist.

Irgendwo fand ich, dass der TTL -Wert 99.999.999 Sekunden betragen kann, ungefähr 3,1 Jahre, aber das wäre einfach nicht praktikabel! ISPs würden es ignorieren, nicht wahr?

Ich habe A-Einträge meiner Domain derzeit auf 864000 Sekunden (10 Tage) festgelegt, da ich auf meinem aktuellen Server verbleibe und DNS-Anfragen reduzieren möchte.

Reduziert dies wirklich die Anzahl der DNS-Anfragen und beschleunigt das Laden der Website beim ersten Besuch?

4
Siamak

TL; DR Maximaler Wert ist 2147483647 (Sekunden), was ungefähr 68 Jahren entspricht.

TTL ist in RFC 1034 wie folgt definiert: "Dieses Feld ist eine 32-Bit-Ganzzahl in Einheiten von Sekunden und wird hauptsächlich von Resolvern verwendet, wenn sie RRs zwischenspeichern." Sein Maximalwert sollte also 2 sein32 - 1, das sind 4 294 967 295 Sekunden oder ungefähr 136 Jahre (was absurd ist, aber das ist der Standard).

Dies wurde jedoch in RFC 2181 als solches neu definiert:

Die Definition der Werte für das Feld TTL in STD 13 lautet
nicht so klar, wie es sein könnte, in Bezug auf wie viele von Bedeutung
Bits existieren und ob der Wert mit oder ohne Vorzeichen ist. Es ist
spezifizierte hiermit, dass ein TTL Wert eine vorzeichenlose Zahl ist, mit einem
minimaler Wert von 0 und maximaler Wert von 2147483647. Das heißt, a
maximal 2 ^ 31 - 1. Bei der Übermittlung ist dieser Wert zu verschlüsseln
in den weniger signifikanten 31 Bits des 32-Bit-Feldes TTL mit dem
höchstwertiges oder vorzeichenbehaftetes Bit auf Null gesetzt.

Beachten Sie, dass es einige Unklarheiten gibt: Dies ist ein Hinweis auf die maximale Zeit, die ein Resolver für einen bestimmten Datensatz benötigt. Es steht dem Resolver jedoch frei, diesen zuvor zu sichern, wenn er dies aus welchen Gründen auch immer wünscht (voller Cache, neuere Daten abrufen möchte) Informationen usw.) sollten aber theoretisch nie über den Wert hinausgehen (aber manche Resolver tun dies, besonders angesichts absurd niedriger TTL Werte wie 5 Sekunden).

Dies ist in RFC 2181 klar formuliert:

Implementierungen können immer eine Obergrenze für jedes empfangene TTL setzen und größere Werte so behandeln, als wären sie diese Obergrenze
gebunden. Das TTL gibt eine maximale Lebenszeit an, die nicht obligatorisch ist
Zeit zu leben.

Das TTL hat beim ersten Besuch keinerlei Auswirkungen: Wenn Sie davon ausgehen, dass Ihr Besucher nur DNS-Cold-Caches durchläuft, werden alle Abfragen übersehen, und es muss die vollständige Auflösung erfolgen. Erst danach wird der Datensatz zwischengespeichert und dann ist das TTL relevant.

Es ist richtig, dass ISP ihren Clients normalerweise rekursive Nameserver bereitstellen. Daher wird der Cache von allen Clients gemeinsam genutzt. Wenn einer von ihnen auf Ihre Website wechselt, wird der Cache gefüllt und der nächste Client desselben ISP wird abgerufen der Datensatz direkt aus dem rekursiven ISP-Nameserver.

Es gibt keine weltweit anerkannte definitive Empfehlung, welcher Wert ein guter ist. Für die meisten statischen Dienste ist wahrscheinlich etwas um ein paar Tage in Ordnung. Wenn Sie später Änderungen vornehmen müssen (z. B. das Hosting ändern), können Sie im Voraus planen und zunächst einen neuen Datensatz mit sehr reduzierter TTL veröffentlichen. Warten Sie auf den vorherigen TTL -Wert (ich vereinfache, andere Timer benötigen ihn) Um dies tatsächlich zu berücksichtigen), ändern Sie Ihren Datensatz, und warten Sie erneut, mindestens auf das neue TTL (optional, stattdessen ist es wahrscheinlich besser, die Einstellungen so zu belassen, wie sie sind, während Sie die neue Einstellung überprüfen müssen ), veröffentlichen Sie einen neuen Datensatz mit dem TTL zurück zum Normalzustand.

6
Patrick Mevzek