2

このタグをHTMLに入れると、次のようになります。

<img src="http://server/imageHandler.php?image=someImage.jpg" />

それ以外の

<img src="http://server/images/someImage.jpg" />

そして、imageHandler.phpスクリプトを使用して、画像ファイルを読み取り、期限切れヘッダーを出力し、画像データを出力します。速度が遅くなると思います。これは、画像ヘッダーを操作するための実行可能な方法ですか、それとも画像がいたるところにあるため、パフォーマンスの低下が大きすぎますか。PHPコードを使用して画像に期限切れヘッダーを設定する他の方法はありますか?

4

4 に答える 4

3

はい、PHP スクリプトを実行すると、静的ファイルを提供するよりも遅くなります。

代わりに、Apache 構成ディレクティブを使用して有効期限ヘッダーを設定できます。のドキュメントを参照してくださいmod_expires。たとえば、次のディレクティブを Apache httpd.conf または .htaccess ファイルに入れることができます。

# enable expirations
ExpiresActive On
# expire JPG images after a month in the client's cache
ExpiresByType image/jpg A2592000
于 2009-02-09T01:32:13.143 に答える
2

次のようなものを試してください

header("Expires: <the date>");
http_send_file("someImage.jpg");

http://us3.php.net/manual/en/function.http-send-file.phpから http_send_file関数(私が思うように機能する場合)は、ファイルをディスクからネットワークインターフェイスに直接コピーします。サーバーがネイティブに送信するのとほぼ同じ速度でイメージ自体を送信します。(もちろん、PHPインタープリターの実行にかかる時間は、静的ファイルを提供するよりも全体的な要求を少し遅くします。)

少なくとも1つの他の回答が述べているように、Apacheを実行している場合、おそらくExpiresヘッダー(または他のヘッダー)を設定する最良の方法は、.htaccessファイルを使用することです。サーバーの、そこにExpires構成を配置します。mod_expiresを見てください。

于 2009-02-09T01:28:09.473 に答える
1

imagehandlerがGDまたはImagickを使用している場合、通常のimgタグよりもかなり遅くなります。

画像出力を一時ファイルにキャッシュすることをお勧めします。ファイルが存在する場合、imagehandlerはその生データを出力するだけですが、新しいファイルを作成する必要がある場合は、一度生成されてからキャッシュに再度使用されます。

htaccessを使用して有効期限を設定できます。

.htaccessキャッシング

于 2009-02-09T01:29:39.453 に答える
0

これは、imageHandler.phpが実行するタスクによって異なります。あなたはあなたのコードにミリ秒単位で時間を印刷することによってそれを測定することができます。

于 2009-02-09T01:28:35.743 に答える