如何索引缓存的动态php页面以及如何仅保留最新页面



我们有一个在线php搜索实用程序,我们希望通过缓存结果页面来提高性能,这样当用户在第一次搜索之后进行相同的搜索时,我们可以显示它们,而不是从数据库中检索相同的数据。

我做了同样的阅读,我理解检查静态缓存页面是否存在于php脚本的开始,如果不创建它在底部的简单想法。

<标题>我的问题

1)如果我们有许多(数千)个缓存的静态页面,那么搜索缓存的静态页面的最佳方法是什么?

2)只保留过去24小时内的静态页面并删除旧的不相关页面的最佳方法是什么?

希望你能分享相关的经验或有趣的想法,帮助我们为我们的网站创建一个好的缓存系统。

谢谢

有两种可能的选择,这取决于您的硬件最适合:

  • 静态缓存:每次搜索时,创建一个静态html页面(其中没有php)并将其保存在磁盘上。创建一个apache可以理解的物理路径,这样当HTML不在那里时,就调用PHP文件,当HTML在那里时,就调用静态文件。这是用mod_rewrite。使用cron作业使用创建文件的时间来清除旧页面。
  • 使用数据库:创建一个表,其中包含一个键列(即搜索字符串)、一个创建时间戳和一个结果页(即完整呈现的输出)。

在这两种情况下,如果缓存存在,则使用它。使用cron进程删除过时的缓存项

  1. 使用基于输入的散列(如md5):查询,页面,过滤器设置等


如果你有复杂的输入,说:

$input = array(
    "query" => "foo",
    "filter" => array(
        "category" => "movies"
    ),
    "page" => 1
);

您可以通过md5(serialize($input));

将其简化为散列

最新更新