0

私はいくつかのデータベースクエリと多くの訪問者を持つサイトを持っているので、id キャッシュを考えました。

これはphpなので、ob_start()などを使って内容を取得し、ファイルを保存します。これは速いです。

0.05秒かかります。(キャッシュする必要さえありません)。

問題はファイルのロードにあります。

私がこれを行う場合:

 readfile($cache_file)

0.43秒かかります。

私が行った場合

$c= fread(fopen($cache_file,'r',filesize($cache_file)) 

(つまり、ファイルを読み取り、出力しないでください) 0.05 よりも高速です。

もし私がそうしたら

echo $c

再び 0.4 秒かかります。

これをスピードアップする方法はありますか?基本的に、キャッシュ全体を一度にエコーする(または readfile が行う)と、その場でページを生成するよりも時間がかかるようです。

psキャッシュファイルのファイルサイズは約41キロバイトです。問題が大きなファイルへのロードであることを確認するために完全にテストしました。readfile($smallfile) を実行します。速いです。キャッシュファイルが大きいときにキャッシュファイルを出力するときだけ遅い

編集 - また、このスクリプトを別のサイトで使用しており、キャッシュ ファイル (かなり基本的なページ) がはるかに小さく、高速化されています。ページに大量のデータがあるため、大きなキャッシュ ファイルが必要なので、40kb から取得することはできません。

4

1 に答える 1

1

Why don't you just serve up the cached page directly instead of passing it through PHP? Save your cached file as [request_name]_cache.html then use mod_rewrite to serve the cached HTML directly if it exists:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}_cache.html -f
RewriteRule ^(.*)$ $1_cache.html

If you're already leveraging mod_rewrite directly you might need to adjust this.

Also if you change the data in the db, don't forget to delete the cached page.

于 2010-09-18T05:15:58.683 に答える