Caching 如何检测网页内容是否与缓存版本不同

Caching 如何检测网页内容是否与缓存版本不同,caching,http-headers,webpage,Caching,Http Headers,Webpage,嗨,伙计们 正如您所知,网页内容的检查过程与我们机器上的静态网页或个人文件略有不同,因为动态网页的内容在每次请求时都会发生更改。因此,如果我们要使用校验和来识别更改,我们将失败!非常简单的例子是当网站所有者在他的网站上使用谷歌广告时;在每个请求上,广告都不同于以前。另外,如果我们只在一段时间内进行缓存,我们也会失败,因为有些网页不是每年更新一次,但有些是每分钟(如果不是几秒钟的话)更新一次 那么,解决这个问题的更好方法是什么呢?(谢谢) 更新 另一个选项是使用LastModified http头

嗨,伙计们 正如您所知,网页内容的检查过程与我们机器上的静态网页或个人文件略有不同,因为动态网页的内容在每次请求时都会发生更改。因此,如果我们要使用校验和来识别更改,我们将失败!非常简单的例子是当网站所有者在他的网站上使用谷歌广告时;在每个请求上,广告都不同于以前。另外,如果我们只在一段时间内进行缓存,我们也会失败,因为有些网页不是每年更新一次,但有些是每分钟(如果不是几秒钟的话)更新一次

那么,解决这个问题的更好方法是什么呢?(谢谢)

更新


另一个选项是使用LastModified http头!但这是一种强大的方法?

浏览器在HTTP提供的几种缓存机制的帮助下自动做到这一点。确定页面是否已更改的最明显的两种机制是实体标记的概念和最后修改的HTTP头这些机制允许浏览器对网站发出有条件的请求,例如,仅当页面已更改时才获取该页面。

在HTTP 1.1上引用:

3.11实体标签

实体标记用于比较同一实体中的两个或多个实体 请求的资源。HTTP/1.1在ETag中使用实体标记(第 14.19),如果匹配(第14.24节),如果不匹配(第14.26节),以及 如果范围(第14.27节)标题字段。如何定义它们 如第13.3.3节所述,使用并比较缓存验证器。一 实体标记由不透明的带引号的字符串组成,可能前缀为 弱点指标

这里的关键点是ETag是一个缓存验证器。如果浏览器具有页面的缓存版本(在RFC中称为资源),它可以使用ETag来确定缓存页面是否仍然有效,即服务器上的页面是否没有更改

关于修改日期:

14.25如果自

If Modified Since request header字段与用于 使其有条件:如果未修改请求的变量 由于在此字段中指定的时间,实体将不会被删除 从服务器返回;相反,将使用304(未修改)响应 返回时没有任何消息体

这里的关键点是,服务器可能知道页面何时被修改,然后可能会通知客户端

如果您打开HTTP监视器(如Fiddler for Windows)并观看浏览器与网站的通信,您将在浏览器发出条件请求时直接看到这些机制的使用


为了明确回答您关于上次修改的页眉的问题,此页眉本身不适用于大多数页面。但结合ETag,它可以让您开始

浏览器在HTTP提供的几种缓存机制的帮助下自动执行此操作。确定页面是否已更改的最明显的两种机制是实体标记的概念和最后修改的HTTP头这些机制允许浏览器对网站发出有条件的请求,例如,仅当页面已更改时才获取该页面。

在HTTP 1.1上引用:

3.11实体标签

实体标记用于比较同一实体中的两个或多个实体 请求的资源。HTTP/1.1在ETag中使用实体标记(第 14.19),如果匹配(第14.24节),如果不匹配(第14.26节),以及 如果范围(第14.27节)标题字段。如何定义它们 如第13.3.3节所述,使用并比较缓存验证器。一 实体标记由不透明的带引号的字符串组成,可能前缀为 弱点指标

这里的关键点是ETag是一个缓存验证器。如果浏览器具有页面的缓存版本(在RFC中称为资源),它可以使用ETag来确定缓存页面是否仍然有效,即服务器上的页面是否没有更改

关于修改日期:

14.25如果自

If Modified Since request header字段与用于 使其有条件:如果未修改请求的变量 由于在此字段中指定的时间,实体将不会被删除 从服务器返回;相反,将使用304(未修改)响应 返回时没有任何消息体

这里的关键点是,服务器可能知道页面何时被修改,然后可能会通知客户端

如果您打开HTTP监视器(如Fiddler for Windows)并观看浏览器与网站的通信,您将在浏览器发出条件请求时直接看到这些机制的使用


为了明确回答您关于上次修改的页眉的问题,此页眉本身不适用于大多数页面。但结合ETag,它可以让您开始

HTTP对此有几种机制。例如,请参阅“谢谢”,这是一篇非常有用的文章。@bzlm请将您的评论复制到新答案。@bzlm Okely dokely???这是什么意思?;)@Sadegh:)HTTP有几种机制可以实现这一点。例如,请参阅“谢谢”,这是一篇非常有用的文章。@bzlm请将您的评论复制到新答案。@bzlm Okely dokely???这是什么意思?;)@你的描述很简单,但很有用!再次感谢;)@如果你有更多的问题,请告诉我们。你的描述很简单,但非常有用!再次感谢;)@如果您有更多问题,请告诉我们。