0

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

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

我的问题

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

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

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

谢谢

4

2 回答 2

0
  1. 使用基于输入的哈希(如 md5):查询、页面、过滤器设置等。

  2. 保留缓存的到期日期。


如果您有复杂的输入,请说:

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

您可以通过以下方式轻松地将其减少为哈希md5(serialize($input));

于 2013-02-28T16:37:23.197 回答
0

有两种可能的选择,具体取决于您的硬件最适合什么:

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

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

于 2013-02-28T16:39:27.063 回答