1

私の質問は、djangoドキュメントのこのセクションを参照しています。

そこには、次のような段落があります。

キャッシングミドルウェアは、キャッシュヘッダーのmax-ageをCACHE_MIDDLEWARE_SECONDS設定の値ですでに設定していることに注意してください。cache_controlデコレータでカスタムmax_ageを使用する場合、デコレータが優先され、ヘッダー値が正しくマージされます。

私の解釈では、デフォルトでは、http-cache関連のデコレータを使用して「Cache-Control」を変更しない限り、djangoサーバーエンドからの応答のhttpヘッダーセクションに「Cache-Control:max-age=600」が含まれます。 "ヘッダー。

上記の解釈を検証するために、簡単な実験を行いました。驚いたことに、ビューでhttp-cache-relatedが使用されていない場合、生成された応答には「Cache-Control」ヘッダーがまったくありません。

公式ドキュメントで説明されているものとは異なる結果が表示されるのはなぜですか?概説された段落を誤解しましたか?

また、応答に「Cache-Control」ヘッダーがない場合、httpキャッシングが含まれていない(つまり、キャッシュされた応答は使用されない)と安全に想定できますか?

4

1 に答える 1

3

これは「デフォルト」では発生しません。Cache-ControlDjangoがヘッダーをアタッチするには、次の2つの条件を満たす必要があります。

  1. CACHES(Django 1.3+)またはBACKEND(Django <1.3)のいずれかでキャッシュバックエンドを設定する必要があります。

  2. キャッシュミドルウェアをに追加する必要がありMIDDLEWARE_CLASSESます。

詳細については、ドキュメントを参照してください。

ヘッダーがない場合のキャッシュに関しては、Cache-Controlそれが一般的にWebブラウザーまたはクライアントの決定になります。従う必要Cache-Controlのあるディレクティブを提供しますが、ブラウザーは通常、既に独自にキャッシュするため、その本当の目的は通常、特定のシナリオでキャッシュを有効にするのではなく、防止することです。

于 2012-05-08T19:28:39.723 に答える