XMLフィードからデータ(自動車販売店の在庫)を取得してサイトに表示するLAMP上に構築されたサイトで作業しています。インデックスページには4台のランダムな車を表示するローテーターがありますが、ページの読み込みには長い遅延があります(約7〜10秒)。これは、サイトがデータを循環して、結果を表示する前に、画像があり、他の基準を満たす車を見つけるためです。私の開発者はこのスクリプトをまとめて、結果を5分間キャッシュしました。
/*
* Cache requests for 5 minutes
* Wraps original method (now _sendRequest)
*/
private function sendRequest($xml) {
error_log($xml);
$cache_filename = dirname(__FILE__) . '/cache/' . md5($xml);
if (file_exists($cache_filename) && (time() - filemtime($cache_filename)) < 300 && filesize($cache_filename) > 100) {
return file_get_contents($cache_filename);
} elseif (file_exists($cache_filename)) {
unlink($cache_filename);
}
$response = $this->_sendRequest($xml);
if (!is_dir(dirname($cache_filename))) {
@mkdir(dirname($cache_filename),0775,true);
}
@file_put_contents($cache_filename, $response);
return $response;
}
private function _sendRequest($xml) {
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_POST => true,
CURLOPT_USERAGENT => Config::$appName,
CURLOPT_USERPWD => Config::$aweAPIKey,
CURLOPT_URL => Config::$aweAPIURL,
CURLOPT_POSTFIELDS => $xml
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
//echo "ERROR: " . curl_error($ch);
curl_close($ch);
return $content;
}
スクリプトのディレクトリは/lib/client.phpにあり、車両データを含む大量のテキストファイルを/ lib / cacheに保存していますが、サイトページの負荷は減少していません。スクリプトに加える必要のある変更や、キャッシュされたデータの保存方法はありますか?