出于缓存目的,我需要检查sql
返回的数据集是否已更改。 HTTP_IF_MODIFIED_SINCE
会检查the file code
是否已更改(如果我错了,请更正我)。我需要一种方法来检查sql
返回的结果是否已更改?什么是最好的方法/方法?感谢名单。
答案 0 :(得分:1)
if(md5($lastsql)==md5($nowsql)){}...
答案 1 :(得分:1)
我需要检查sql返回的数据集是否已更改
真正的答案是:你不能:)
当你没有回来时,你如何判断数据是否已经改变?正确 - 你根本说不出来!
当数据可能发生变化时,根据您的推定调整缓存时间。没有简单的方法来决定这一点。缓存意味着权衡从数据库中获取新数据的成本以及您(您的用户)可能使用旧数据的时间长度,而不是每个数据都可以像其他数据一样缓存。
数据库本身使用查询缓存,并且应该能够从其缓存中提供未更改的结果集(这样做很多更加智能,因为PHP可能会这样做)。但是,在多用户环境中,由于数据库流量很大,这些缓存往往会提前释放。在这里,您可以帮助您自己的缓存策略。
答案 2 :(得分:0)
HTTP_IF_MODIFIED_SINCE将检查文件代码是否已更改(如果我错了,请更正我)
If-Modified-Since
标头告诉应用程序使用304
状态代码进行响应,如果它可以确定资源自指定日期以来没有更改。
对于静态文件,通常Web服务器自己处理,修改日期是静态文件的修改日期。
对于非静态资源,如PHP脚本,应用程序(即您的代码)必须处理If-Modified-Since标头本身。大多数应用程序没有。实现此目的的应用程序通常是指数据的修改,而不是代码。
答案 3 :(得分:0)
您可能正在进行“乐观并发控制”。这通常涉及数据库中的“版本”字段,然后您可以将其用作HTTP中的“etag”。 (关键字有“条件GET”)