如何索引缓存的动态php页面&如何只保留最新的页面

时间:2013-02-28 16:35:08

标签: php caching

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

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

我的问题

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

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

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

  2. 在缓存上保留到期日期。


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

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

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

    轻松将其减少为哈希值

答案 1 :(得分:0)

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

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

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