私はApacheを使用しています。初めて直接イメージをリクエストすると、イメージのステータスは「200 OK」になります。後続の要求のステータスは「304 Not Modified」となり、クライアントとサーバーの両方の帯域幅が節約されるため、良好です。PHP:ウェブルートとキャッシング外のストリーミングイメージ
私はユーザーが画像をアップロードできるウェブサイトに取り組んでいます。これらのイメージは、ホットリンクを防ぐだけでなく、イメージ上の統計情報を収集できるように、Webrootの外部に格納する必要があります。だから私の考えは、画像をストリーミングするために、次のようにPHPスクリプトを使用していた:
<?php
$image_to_stream = '/path/outside/of/webroot/image.jpg';
$cache_seconds = 2592000; // 30 days
header("Cache-Control: max-age=$cache_seconds");
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_seconds) . ' GMT');
header('Pragma: cache');
header('Content-Type: image/jpg');
header('Content-length: ' . filesize($image_to_stream));
readfile($image_to_stream);
?>
しかし、スクリプトは常に「OK 200」のステータスを持っているように見えますし、画像全体がストリーミングされます。これを修正する方法はありますか、別のアプローチをとっているのでしょうか?ありがとう!
を!どうもありがとうございました! – Nick
しかし、帯域幅を節約したい場合は、新しいCache-control/expiresヘッダーを忘れずに* * – symcbean
@symcbean、合意してください! – Brad