2017-11-29 4 views
0

私は現在、thisの「last-modified」HTTPヘッダーを読んでいます。私はソースの数を読んだことがありますが、私はそれが特定のリソースに対してどのように生成されるのか、まだ混乱しています。リソースの「最後に変更された」HTTPヘッダを生成するにはどうすればよいですか?

DB内のリソースが変更された場合のタイムスタンプのみに依存しますか。つまりPUT要求がdbに対して処理されるときに発生します。同じリソースで?

問題に取り組むための一般化された、またはほぼ一般化されたロジックがありますか?

そして、last-modifiedの世代は、実際のアプリケーションの唯一の責任ですか?または他の方法がありますか?

答えて

1

my answer about ETagsで説明したように、ヘッダを提供する責任は常にリソースプロバイダにあります。

ETagsの場合と同様に、Webサーバーまたはフレームワークがヘッダーの作成を自動化する方法があります。最も一般的なケースは、静的ファイルを提供するWebサーバーがファイルの変更時刻を使用してLast-Modifiedヘッダーを設定できることです。

動的アプリケーションでは、一般的に標準の情報源がないため、自動化するのは難しいです。私がよく知っている例を取るために、Djangoはspecify a functionにあなたにLast-Modifiedの日付を得るために呼び出されます。アプリケーション固有のロジックをその関数に入れるのはあなた次第ですが、フレームワークはヘッダーに値を設定し、比較を行ってNot Modifiedの応答を返します。

私の印象は、ほとんどの動的アプリケーションがLast-Modifiedヘッダーを気にしないということです。キャッシングヘッダーを特定するカスタムロジックを提供する必要がある場合は、ETagを指定するだけでよいでしょう。また、ETagsを使用すると、フレームワークが応答をハッシュする場合、アプリケーション固有のロジックを実行することを避けることができます。

+0

意味があります。残念ながら、この文脈に対処した非常にオンラインの情報源があります。おそらく、それらのことは必須ではないからです。あなたの答えでは、「おそらくフレームワークがある」と言っていますが、あなたはそれを正しく認識していませんか? –

+1

@SupunWijerathne:いいえ、「Last-Modified」ヘッダーの作成を完全に自動化できる動的アプリケーションのフレームワークについてはわかりません。私はDjangoがどのようにしているかの例を追加しました。これはおそらくあなたができる最大のものだと思います。 –

関連する問題