PhP/MySQL 在页面之间存储用户搜索以便用户可以返回到它们

标签 php mysql search data-persistence

我正在编写一个 php-mysql 应用程序。该应用程序允许用户对数据库运行搜索。当搜索运行时,如果用户在检查了它提出的项目后单击后退按钮返回它,他们将被询问是否要重新发送查询(它使用 post)。这将重新运行数据库中的搜索。使用 get 不会导致重新发布请求 - 但它仍会再次运行搜索。

有没有一种方法可以存储搜索并调用它,而无需在数据库中重新运行它?

这可以将其保存在数据库中,或者以某种方式保存在 php 中 - 也许使用 session ?这些搜索可能会产生大量数据,我觉得这对于 session 来说可能太多了。

我能想到的另一种方法是将其存储在数据库中,某种临时表中。使用我打算查询的列创建表,然后选择插入。然后从表中选择 *。这似乎也是一个坏主意。许多动态创建的临时表四处 float 。

我知道这是可以做到的。保存的搜索是您在许多 Web 应用程序中看到的内容。那么一般是怎么做的呢?

最佳答案

memcached

APC

但是,我注意到您没有给出任何为什么要缓存搜索结果的原因。 “因为它更快,而且我读到它使我的应用程序更具可扩展性”,这是通常的原因。这听起来像是过早的优化。

我建议您构建您的应用程序并分析它。这些“搜索”的成本是多少? 为什么它们很贵?是模式设计不佳吗?索引不好吗?存储引擎选择不当?

你知道 MySQL 有一个 query cache , 正确的?在许多情况下,这可能就是您所需要的。尝试使用 mysql 客户端运行一个昂贵的“搜索”查询并记下时间,然后再次运行它。看到了吗?

关于PhP/MySQL 在页面之间存储用户搜索以便用户可以返回到它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125977/

相关文章:

php - 我的MySQL语句中的该列有什么问题?

arrays - 在排序的 3d 数组中搜索元素

javascript - 检查浏览器中是否启用了 javascript

ruby-on-rails - Rails 在搜索中组合多个列

Php递归数组计数

php - Aptana 3.0.4 和 PHP 调试

php - MySQL一行中的几个ID与另一张表连接

php - 使用mysql使用另一列获取唯一ID

php - 503 表单提交时服务不可用

MySQL:使用 "two halves"方法查找中位数