PHP バックエンドで生成された画像が CDN でキャッシュできない問題を解決する方法
今日、オンライン画像ドメイン名の場合、CDN キャッシュがフロントエンドに追加されているという問題を発見しました。キャッシュされていないため、PHP を使用して画像のスケーリングを動的に実装できますが、PHP で処理された画像が出力された後、毎回バックエンドから読み込む必要があり、分析後のバックエンド サーバーへの負荷が瞬時に増加します。
HTTP の原理は次のとおりです。サーバーへの各リクエストの後、サーバーは変更があるかどうかを検出し、変更がない場合は、クライアントのステータス コードを直接返します。キャッシュが使用されます。304 が設定されている場合、対応する URL がキャッシュされます。
http://www.lai18.com/content/433445.htmlコードは次のとおりです:
//检测有没改变//edit http://www.lai18.com if (isset($_SERVER['HTTP_IF_NONE_MATCH'])){ $etag = $_SERVER['HTTP_IF_NONE_MATCH']; if (md5($this->image) === $etag){ header("HTTP/1.1 304 Not Modified"); exit; }}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;
fastcgi_param CACHE_ETAG $http_if_none_match;