提前为冗长的帖子道歉,只是想清楚地解释情况。
我创建了一个 PHP 驱动的网站,用于搜索大型(数百万条记录)MySQL 数据库。在搜索页面上,您有常用的搜索条件表单。由于人们经常使用该站点的方式,搜索条件被保存到会话变量中,因此如果重新加载搜索页面,以前的条件仍保留在表单字段中(当然,有一个手动重置条件的按钮)。这本身就可以正常工作。
我还有两个语言选择链接,它们将语言选择存储在会话变量中(使页眉加载适当的本地化文件),如上所述,这本身也可以正常工作。
有问题的是,当用户获得搜索结果时,人员列表,并想要打开一个人的详细信息(因此从 search.php 到 info.php),然后想要返回到人员列表通过后退按钮,由于页面重新发送 MySQL 查询等,重新加载上一页需要太长时间,而不是返回到缓存页面。有时甚至可能需要 5 秒或更长时间,因为查询会产生多达 5000 个结果 - 但即使说,重新加载 200-500 个结果也需要很长时间,因为数据库本身很大而且不是世界上最快的。限制结果的数量并不实际。
乍一看,显而易见的解决方案似乎是启用浏览器缓存。这正是我通过 PHP 标头和编译指示控件所做的。一切似乎都很好,因为回到列表基本上是瞬间的。但是,我意识到启用缓存意味着更新的会话变量不起作用。在进入不同页面后重新加载搜索页面时,新的搜索条件无法正确替换旧的搜索条件,即使您选择了另一种语言,页面也会以您之前使用的语言打开,因为这是它们被缓存的方式!您可以通过 F5 强制语言更新,但这似乎对搜索条件没有多大帮助。但即使这样做了,F5-spam 也不是真正的答案,它需要自动工作。
长话短说,如何在不使会话变量无用的情况下快速打开搜索结果列表?或者在使用后退按钮时我是否只需要处理缓慢的页面加载,从而让用户感到厌烦?我也真的不想在新页面中打开 info.php。