2017-01-29 27 views
0

私たちは静的ファイルを提供するためにnginxを使用しています。以下は設定です:ブラウザに200のステータスコードが表示され、キャッシュされていると表示されます

# To serve files with version appended as ?v=0.2 etc. 
# for app level js and css only 
location ~ ^/(assets/js/|assets/css/) { 
    root /path/to/static/files/public; 
    access_log off; 
    expires max; 
    try_files $uri $1; 
} 

# other static files 
location ~ ^/(assets/|images/|favicon.ico) { 
    root /path/to/static/files/public; 
    access_log off; 
    expires max; 
} 

私はブラウザに表示されているものが、キャッシュされたファイルも200になることがあります。

私はnginxのアクセスログを有効にし、ステータスコードが200であってもキャッシュされていても、それがnginxサーバーに当たらないことを確認しました。 しかし、キャッシュされたファイルに対して304の代わりに200のステータスコードを与えるのはなぜですか?私の設定に何か問題はありますか?

答えて

1

これは予期された動作です。

expires [some-date-in-the-future]を使用すると、基本的に、その日付に達するまで要求を処理するためにローカルキャッシュを使用するようブラウザに指示しています。 ブラウザローカルキャッシュは、200 OK応答でと応答します。これは、リソースが正常にフェッチされた場合にプロトコルが予期しているものです。

If-Modified-Sinceヘッダーを使用して、最後のアクセス以降にリソースが変更された場合、その日付を過ぎるとブラウザはサーバーに尋ねるのに十分なほど精巧です。サーバーが304 Not Modifiedと答えると、ブラウザはローカルキャッシュからそのバージョンをうまく再利用します。

関連する問題