php静的ファイル戻り304テクニック共有

963 ワード

画像などの静的ファイルがphpで出力される場合があり、要求が200であることがわかります.静的ファイルは毎回サーバに要求されるのはリソースの浪費ですが、ブラウザに画像をキャッシュさせるにはどうすればいいですか.phpに304を出力する必要があります.
phpのHTTPを利用できますIF_MODIFIED_SINCEはetagと結合してこのことをします.Etagには明確なフォーマットがありません.ファイルで時間のmd 5値を変更できます.コードは以下の通りです.
 
  
private function _addEtag($file) {
    $last_modified_time = filemtime($file);
    $etag = md5_file($file);
    // always send headers
    header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");
    header("Etag: $etag");
    // exit if not modified
    if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time ||
    @trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
        header("HTTP/1.1 304 Not Modified");
        exit;
    }
}

画像などの静的ファイルが出力される前にコードで呼び出すことができます.