如何检查自上次检查后查询返回的结果是否已更改

时间:2013-06-03 19:46:48

标签: php mysql caching

出于缓存目的,我需要检查sql返回的数据集是否已更改。 HTTP_IF_MODIFIED_SINCE会检查the file code是否已更改(如果我错了,请更正我)。我需要一种方法来检查sql返回的结果是否已更改?什么是最好的方法/方法?感谢名单。

4 个答案:

答案 0 :(得分:1)

你可以使用MD5(str);

if(md5($lastsql)==md5($nowsql)){}...

md5 description

答案 1 :(得分:1)

  

我需要检查sql返回的数据集是否已更改

真正的答案是:你不能:)

当你没有回来时,你如何判断数据是否已经改变?正确 - 你根本说不出来!

当数据可能发生变化时,根据您的推定调整缓存时间。没有简单的方法来决定这一点。缓存意味着权衡从数据库中获取新数据的成本以及您(您的用户)可能使用旧数据的时间长度,而不是每个数据都可以像其他数据一样缓存。

数据库本身使用查询缓存,并且应该能够从其缓存中提供未更改的结果集(这样做很多更加智能,因为PHP可能会这样做)。但是,在多用户环境中,由于数据库流量很大,这些缓存往往会提前释放。在这里,您可以帮助您自己的缓存策略。

答案 2 :(得分:0)

  

HTTP_IF_MODIFIED_SINCE将检查文件代码是否已更改(如果我错了,请更正我)

If-Modified-Since标头告诉应用程序使用304状态代码进行响应,如果它可以确定资源自指定日期以来没有更改。

对于静态文件,通常Web服务器自己处理,修改日期是静态文件的修改日期。

对于非静态资源,如PHP脚本,应用程序(即您的代码)必须处理If-Modified-Since标头本身。大多数应用程序没有。实现此目的的应用程序通常是指数据的修改,而不是代码。

答案 3 :(得分:0)

您可能正在进行“乐观并发控制”。这通常涉及数据库中的“版本”字段,然后您可以将其用作HTTP中的“etag”。 (关键字有“条件GET”)

相关问题