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 KB。我已经进行了全面测试,以确保问题在于大文件的加载。做一个 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 回答