私はこのリンクに基づいて私のサイトで基本的なキャッシュシステムを使用しています
これまでのところ、私がやりたいことすべてにうまく機能しています。
$cachefile = 'cache/'. basename($_SERVER['QUERY_STRING']) . '.html';
$cachetime = 1440 * 60;
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->";
exit;
}
ob_start();
// My html/php code here
$fp = fopen($cachefile, 'w'); // open the cache file for writing
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file
fclose($fp); // close
ob_end_flush(); // Send to browser
ただし、より詳細なmysqlクエリを含むページがいくつかあります。最適化にかなりの時間を費やしましたが、mysqlでクエリを実行すると、実行に約10秒かかり、Webサイトではさらに長くなります。また、以下のメッセージが表示されると、タイムアウトになることがあります。
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the requestGET http://www.example.com
Reason: Error reading from remote server
これは大きな問題ではありません。上記のキャッシュシステムを使用しているのは、その日に最初にクリックした人だけが遅延を取得し、残りの時間はユーザーがキャッシュされたページを取得するため、実際には非常に高速です。 。
毎日最初にページにアクセスしてこのプロセスを自動化する必要がないようにしたいので、毎日17:00(サーバー上)にファイルがキャッシュに書き込まれます。
これをどのように達成するのが最善でしょうか?