PHP缓存数据库结果和输入变量
我有一个用PHP编写的相当基本的CRUD应用程序(重点是R)。它通过连接到OpenEdge数据库。应用程序中的每个页面基本上返回数据库查询的结果,并将其显示在表中。每个页面顶部都有一个表单,允许用户指定页面查询的参数。表单加载相同的页面,但将用户参数作为GET变量传递 我希望能够存储查询结果,这样,只要用户不指定新参数,页面就可以加载相同的内容(并且不从数据库中获取新数据),甚至在后续页面加载时(例如,用户可以访问另一个页面并回来查看相同的数据)。我们的推理是,我们希望用户能够分析数据,就像他们是纸质报告(如果在数据库中要更新的话,它不会在分析的中间发生变化)。 我目前的做法是使用SESSION变量。我让页面在会话中存储输入参数和结果。下次加载页面时,它会检查会话和GET变量是否已设置,然后比较它们是否相同。如果它们不相同,则使用GET变量再次查询数据库。如果它们相同,则使用缓存的数据 这种方法的问题是,它会导致一些非常笨拙的代码,并且不能很好地与输入变量的数量进行伸缩 仅一个变量的代码示例,PHP缓存数据库结果和输入变量,php,odbc,Php,Odbc,我有一个用PHP编写的相当基本的CRUD应用程序(重点是R)。它通过连接到OpenEdge数据库。应用程序中的每个页面基本上返回数据库查询的结果,并将其显示在表中。每个页面顶部都有一个表单,允许用户指定页面查询的参数。表单加载相同的页面,但将用户参数作为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中所说的,这不是响应时间的问题,而是数据的问题。我们不希望获得更新的数据,除非用户明确请求。