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