ホームページ >バックエンド開発 >PHPチュートリアル >PHPファイルで生成した画像がCDN_PHPでキャッシュできない問題の解決方法 Tutorial

PHPファイルで生成した画像がCDN_PHPでキャッシュできない問題の解決方法 Tutorial

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

PHPファイルで生成した画像がCDNでキャッシュできない問題の解決策

この記事では主にPHPファイルで生成した画像がCDNでキャッシュできない問題の解決策を紹介します。ここでの by PHP は、ソース アドレスが PHP ファイルであることを意味します。CDN を使用しない場合、サーバーへの負荷が非常に大きくなります。CDN を必要とする友人は、この記事を参照してください。

オンライン画像ドメイン名の場合、キャッシュが削除されない場合、PHP によって画像が処理された後に、PHP が使用されて問題が発生しました。が出力されるので、エクスポートする必要があります。バックエンドから読み込むと、バックエンドサーバーへの負荷が瞬時に増加します。分析の結果、PHP には 304 処理が存在しないことがわかります。

HTTP の原理は次のとおりです。サーバーへの各リクエストの後、サーバーは変更があるかどうかを検出し、変更がない場合は、クライアントのキャッシュを使用することができます。 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 に追加しました。 .デフォルト:

コードをコピーします。コードは次のとおりです:

fastcgi_param CACHE_ETAG $http_if_none_match;

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

http://www.bkjia.com/PHPjc/1020284.html

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