我们有一个在线php搜索实用程序,我们希望通过缓存结果页面来提高性能,这样当用户在第一次搜索之后进行相同的搜索时,我们可以显示它们,而不是从数据库中检索相同的数据。
我做了同样的阅读,我理解检查静态缓存页面是否存在于php脚本的开始,如果不创建它在底部的简单想法。
<标题>我的问题1)如果我们有许多(数千)个缓存的静态页面,那么搜索缓存的静态页面的最佳方法是什么?
2)只保留过去24小时内的静态页面并删除旧的不相关页面的最佳方法是什么?
希望你能分享相关的经验或有趣的想法,帮助我们为我们的网站创建一个好的缓存系统。
谢谢
标题>有两种可能的选择,这取决于您的硬件最适合:
- 静态缓存:每次搜索时,创建一个静态html页面(其中没有php)并将其保存在磁盘上。创建一个apache可以理解的物理路径,这样当HTML不在那里时,就调用PHP文件,当HTML在那里时,就调用静态文件。这是用
mod_rewrite
。使用cron作业使用创建文件的时间来清除旧页面。 - 使用数据库:创建一个表,其中包含一个键列(即搜索字符串)、一个创建时间戳和一个结果页(即完整呈现的输出)。
在这两种情况下,如果缓存存在,则使用它。使用cron进程删除过时的缓存项
-
使用基于输入的散列(如md5):查询,页面,过滤器设置等
如果你有复杂的输入,说:
$input = array(
"query" => "foo",
"filter" => array(
"category" => "movies"
),
"page" => 1
);
您可以通过md5(serialize($input));