评论:今天,当您查看Web服务器日志时,会看到很多304个HTTP状态。为什么你会回到304而不是200这与服务器的缓存设置非常相关。




HTTP 304:未修改
标准的解释是:未修改的客户端有缓冲的文档并发送有条件的请求(通常是修改,因为报头是为了表示客户机只想更新文档而不是指定的日期)。

让我们先看看浏览器的工作原理:
(1)得到的内容直接在缓存中。如果前一个响应头包含有效的访问后,最大年龄,,打开一个新窗口;;输入URI,后,页前页;;的浏览器的行为不会对到期使浏览器,最大年龄设定时间内访问有效期但在缓存服务器获取内容,但刷新或重型例外。
(2)访问服务器获取内容根据服务器的响应。这发生在没有建立缓存和其他标题要求不缓存,或设置期满,最大年龄,但浏览器的行为是刷新,或超载;。'last-modified ','etag ','must-revalidate'etc.有些特别,不是由浏览器行为的直接影响,他们必须能够访问服务器,然后服务器通过新资源的判断直接发送,或发送304不改使用浏览器缓存资源。

如果客户发现一个文件的最后修改当请求一个文件,然后If-Modified-Since将包含在请求,这是最后的修改缓存文件。因此,如果请求包含If-Modified-Since,表明缓存被缓存在客户端,这是肯定的返回304或200,只要时间和当前请求的时间进行修改。对于静态文件,如CSS,图片,服务器自动进行最后的修饰改性后,如果完成缓存或更新。但对于动态页面,页面动态生成往往不包含最后修改的信息,所以浏览器、网关等不做缓存,即每个请求完成时间要求200的T。
因此,对于动态页面缓存加速,我们首先增加HTTP响应头中最后修改的定义。其次,我们返回200或304根据If-Modified-Since请求和请求的内容更新时间。虽然回到304做了一个数据库查询,但是可以避免更多的数据库查询,并没有返回的网页内容,只是一个HTTP头,从而大大减少了带宽消耗,但同时提高用户的感觉。

如何测试HTTP状态,以及缓存是否有效

你可以使用HttpWatch
第一次200
单击鼠标进行两次访问(缓存)
按F5刷新304
按Ctrl - F5刷新200
如果是这样的话,它表明缓存是非常有效的。

对HTTP 304的理解

我最近看到了Web缓存问题与同事,并进一步了解,304的HTTP有一些了解。
304的标准解释是:未修改的客户端有缓冲的文档并发送有条件的请求(通常是从头部提供的修改来表明客户机只想更新指定的日期)。
如果客户发现一个文件的最后修改当请求一个文件,然后If-Modified-Since将包含在请求,这是最后的修改缓存文件。因此,如果请求包含If-Modified-Since,表明缓存被缓存在客户端,这是肯定的返回304或200,只要时间和当前请求的时间进行修改。对于静态文件,如CSS,图片,服务器自动进行最后的修饰改性后,如果完成缓存或更新。但对于动态页面,页面动态生成往往不包含最后修改的信息,所以浏览器、网关等不做缓存,即每个请求完成时间要求200的T。
因此,对于动态页面缓存加速,我们首先增加HTTP响应头中最后修改的定义。其次,我们返回200或304根据If-Modified-Since请求和请求的内容更新时间。虽然回到304做了一个数据库查询,但是可以避免更多的数据库查询,并没有返回的网页内容,只是一个HTTP头,从而大大减少了带宽消耗,但同时提高用户的感觉。
当这些缓存是有效的,通过HttpWatch查看请求将导致这样一个结果:

第一次200
单击鼠标进行两次访问(缓存)
按F5刷新304
按Ctrl - F5刷新200
如果是这样的话,它表明缓存是真正有效的,这是我对HTTP 304的理解。