PHP缓存数据库结果和输入变量

PHP缓存数据库结果和输入变量,php,odbc,Php,Odbc,我有一个用PHP编写的相当基本的CRUD应用程序(重点是R)。它通过连接到OpenEdge数据库。应用程序中的每个页面基本上返回数据库查询的结果,并将其显示在表中。每个页面顶部都有一个表单,允许用户指定页面查询的参数。表单加载相同的页面,但将用户参数作为GET变量传递 我希望能够存储查询结果,这样,只要用户不指定新参数,页面就可以加载相同的内容(并且不从数据库中获取新数据),甚至在后续页面加载时(例如,用户可以访问另一个页面并回来查看相同的数据)。我们的推理是,我们希望用户能够分析数据,就像他们

我有一个用PHP编写的相当基本的CRUD应用程序(重点是R)。它通过连接到OpenEdge数据库。应用程序中的每个页面基本上返回数据库查询的结果,并将其显示在表中。每个页面顶部都有一个表单,允许用户指定页面查询的参数。表单加载相同的页面,但将用户参数作为GET变量传递

我希望能够存储查询结果,这样,只要用户不指定新参数,页面就可以加载相同的内容(并且不从数据库中获取新数据),甚至在后续页面加载时(例如,用户可以访问另一个页面并回来查看相同的数据)。我们的推理是,我们希望用户能够分析数据,就像他们是纸质报告(如果在数据库中要更新的话,它不会在分析的中间发生变化)。 我目前的做法是使用SESSION变量。我让页面在会话中存储输入参数和结果。下次加载页面时,它会检查会话和GET变量是否已设置,然后比较它们是否相同。如果它们不相同,则使用GET变量再次查询数据库。如果它们相同,则使用缓存的数据

这种方法的问题是,它会导致一些非常笨拙的代码,并且不能很好地与输入变量的数量进行伸缩

仅一个变量的代码示例,
part
及其结果,
part\u orders

if (isset($_GET['part']) && isset($_SESSION['part'])){
    if(($_GET['part'] == $_SESSION['part']) && isset($_SESSION['part_orders'])){
        $part_orders = $_SESSION['part_orders'];
        $part = $_SESSION['part'];
    }
    else{
        $part = $_GET['part'];
        $part_orders = get_new_part_order_list($part, $query);

        $_SESSION['part_orders'] = $part_orders;
        $_SESSION['part'] = $part;
    }
}    
elseif(!isset($_GET['part']) && isset($_SESSION['part'])){
    if(isset($_SESSION['part_orders'])){
        $partial_part_no = $_SESSION['part'];
        $part_orders = $_SESSION['part_orders'];
        $part = '';
    }
    else{
        $part = $_SESSION['part'];
        $part_orders = get_new_part_order_list($part, $query);

        $_SESSION['part_orders'] = $part_orders;
        $_SESSION['part'] = $part;
    }
} 
elseif(isset($_GET['part']) && !isset($_SESSION['part'])){
    $part = $_GET['part'];
    $part_orders = get_new_part_order_list($part, $query);

    $_SESSION['part_orders'] = $part_orders;
    $_SESSION['part'] = $part;
}
有更好的方法吗?看看这里的其他一些问题,我们谈到了将结果写入文件,但是对于每个用户来说,对于每个页面的文件来说,这似乎是一个麻烦


其他建议似乎只适用于未更改的查询(例如,加载博客帖子)。

此ODBC数据库的响应时间是多少?您真的需要缓存吗?正如我在OP中所说的,这不是响应时间的问题,而是数据的问题。我们不希望获得更新的数据,除非用户明确请求。