web-dev-qa-db-ja.com

最大の実用的なTTLは何ですか

Aエントリの最大の実用的なTTL値が何であるかを知りたいだけです。

どこかでTTLの値は99,999,999秒(3.1年程度)に達することがありますが、実際には実用的ではありません。 ISPはそれを無視しますよね?

現在、ドメインのAエントリを864000秒(10日間)に設定しています。これは、現在のサーバーにとどまり、DNSクエリを減らしたいためです。

これは本当にDNSクエリを削減し、最初の訪問でWebサイトの読み込みを高速化しますか?

4
Siamak

TL; DR最大値は2147483647(秒)で、約68年です。

TTLは RFC 1034 で定義されています: "このフィールドは秒単位の32ビット整数であり、主にリゾルバがRRをキャッシュするときに使用されます。"そのため、その最大値は2でなければなりません32 -1、つまり4 294 967 295秒または約136年(これは不条理ですが、それが標準です)。

しかし、これは RFC 2181 で再定義されました:

STD 13のTTLフィールドに適切な値の定義は次のとおりです。
どれほど重要であるかに関して、可能な限り明確ではない
ビットが存在し、値が符号付きか符号なしか。それは
これにより、TTL値が符号なしの数値であり、
最小値0、最大値2147483647。つまり、a
最大2 ^ 31-1.送信時に、この値はエンコードされます。
32ビットTTLフィールドの下位31ビットで、
最上位ビットまたは符号ビットがゼロに設定されています。

あいまいさがあることに注意してください。これは、リゾルバーが特定のレコードを保持する最大時間を示していますが、リゾルバーは、何らかの理由(フルキャッシュ、より新しいデータの取得を希望する場合)でその前に自由にダンプできます情報など)が、理論上は値を超えてはなりません(ただし、特に5秒のような非常に低いTTL値に直面して、一部のレゾルバはそれを超えます)。

これは、RFC 2181で明確に記述されています。

実装は常に、受信したTTLに上限を設定し、それより大きい値をあたかもその上限であるかのように扱います。
バウンド。 TTLは、必須ではなく、最大有効期間を指定します
有効期間。

TTLは初めての訪問ではまったく影響がありません。訪問者がDNSコールドキャッシュのみを通過すると考えると、すべてのクエリが失われ、完全な解決が必要になります。レコードがキャッシュされた後にのみ、TTLが関連します。

ISPは通常、クライアントに再帰的なネームサーバーを提供するため、キャッシュはすべてのクライアント間で共有されるため、そのうちの1つがWebサイトにアクセスすると、キャッシュがいっぱいになり、同じISPの次のクライアントが取得されますISPの再帰ネームサーバーから直接のレコード。

どの価値が良いものであるかについて、世界的に尊敬される明確な助言はありません。ほとんどの静的サービスについては、おそらく数日で問題ありません。後で物事を変更する必要がある場合(ホスティングの変更など)、事前に計画し、TTLを大幅に減らして新しいレコードを公開することから始めて、前のTTL値を待ちます(簡単に、他のタイマーが必要です)実際に考慮されるように)、記録を変更し、少なくとも新しいTTLを再度待ちます(オプション、代わりに、新しい設定を検証する必要がある間はそのままにしておくことをお勧めします) )、TTLを使用して新しいレコードを公開し、通常の状態に戻します。

6
Patrick Mevzek