ホームページ >バックエンド開発 >PHPチュートリアル >PHP ファイルによって生成された画像は CDN によってキャッシュできません、_PHP チュートリアル

PHP ファイルによって生成された画像は CDN によってキャッシュできません、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:49:381007ブラウズ

PHP ファイルによって生成された画像は、CDN キャッシュ ソリューションを使用できません。

オンラインで画像ドメイン名について、CDN キャッシュが削除されていない場合、問題が発生しました。画像の動的ズームを実現するためにPHPを使用しますが、PHPで処理した画像を出力した後は毎回バックエンドから読み込む必要があり、解析後のバックエンドサーバーへの負荷が瞬時に高まります。 PHP、

HTTP の原理は次のとおりです。サーバーへの各リクエストの後、サーバーは変更があるかどうかを検出し、変更がない場合は直接 304 ステータス コードを返すことができるため、クライアントのキャッシュが使用されます。 CDN の原則。304 が設定されている場合、対応する URL がキャッシュされます。

関連するコードは次のとおりです:
コードをコピーします コードは次のとおりです:
// 変化がないか確認してください
if (isset($_SERVER['HTTP_IF_NONE_MATCH'])){
$etag = $_SERVER['HTTP_IF_NONE_MATCH'];
If (md5($this->image) === $etag){
header("HTTP/1.1 304 未変更");
終了します;
}
}

header("Last-Modified: " .gmdate("D, d M Y H:i:s", strtotime('2011-1-1'))." GMT");
//etagヘッダーを出力します
header('etag:' . md5($this->image));
header('Cache-Control:max-age=2592000');echo $this->image;

http ヘッダー HTTP_IF_NONE_MATCH は、通常、サーバーによって返される特定の URL の識別子であり、このようにして、MD5 値が正しいかどうかを確認できます。

追記:

長い間パッケージを取得したところ、サーバーから返された Etag タグのみが表示され、クライアントの http ヘッダーに If-None-Match が表示されなかったので、次のコードを fastcgi に追加しました。 .conf.default:
コードをコピーします コードは次のとおりです:
fastcgi_param CACHE_ETAG $http_if_none_match;

$_SERVER が出力されるとき、CACHE_ETAG 変数はまったくありません。nginx は関連する HTTP ヘッダーを $_SERVER 変数に入れるようです。これにより、http プロトコルの理解も深まります

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1019442.html技術記事 PHP ファイルによって生成されたイメージは、CDN キャッシュを使用して解決できません。オンラインでイメージ ドメイン名については、CDN キャッシュがキャッシュに収まらない場合は、PH を使用してください。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。