服务器http协议版本,web-server – Web服务器/ http协议如何处理版本控制和压缩?...

本文详细介绍了HTTP缓存的工作原理,包括浏览器如何检查本地缓存,何时向服务器发送请求以及服务器如何响应。当浏览器请求文件时,可能的情况包括使用未过期的缓存版本、请求过期文件的最新版本或完全无缓存时的请求。服务器根据If-Modified-Since标头决定是否返回文件的最新内容,从而节省网络流量。此外,还提到了文件压缩和TCP/IP连接的复用以提高效率。
摘要由CSDN通过智能技术生成

您可以在

HTTP specification中详细了解它,但这里是要点:当浏览器需要请求文件时,它首先检查其本地缓存.主要有三种可能性:

>浏览器具有文件的本地(缓存)版本,该版本标记为在特定时间到期,并且该时间在将来.在这种情况下,浏览器可以选择使用缓存版本,也可以向服务器发送请求以查看文件是否已更改.如果浏览器发送请求,它将包含一个If-Modified-Since标头,其中包含上次访问文件的时间.

>浏览器具有已过期的文件的缓存版本.在这种情况下,浏览器肯定会向服务器发送一个请求以查看是否有新版本,并且该请求将(通常)包含一个If-Modified-Since标头,其中包含上次访问该文件的时间.

>浏览器根本没有缓存文件,在这种情况下,它会发送一个没有If-Modified-Since标头的请求.

当请求到达服务器时,基本上会发生一些事情.如果请求不包含If-Modified-Since标头,则服务器将继续使用HTTP 200(OK)响应代码发回文件. (或者它将发送404文件未找到,或403禁止,或任何适当的)但如果请求确实包含If-Modified-Since标头,服务器知道它只需要发回文件,如果它是自标题中包含的时间开始修改.现在,如果文件从那时起被修改,那么服务器将再次发回代码为200或403,404的文件.但是,如果文件自指定时间以来未被修改 – 记住,这意味着浏览器的缓存版本仍然是最新的 – 服务器可以使用304(未修改)代码进行响应,并省略文件本身的内容.这节省了一些网络流量.

现在,假设服务器将使用文件的完整内容进行响应,有几种方法可以解决,具体取决于服务器的编写和/或配置方式.显然,它可以只是从磁盘读取文件(或运行程序来生成它,如果它是一个动态页面),每次请求进入并发送回来,但是如你所知,这是低效的.如果浏览器在其请求中指定了Accept-Encoding:gzip,则服务器可以做的一件事是发送回文件的gzip压缩版本.服务器保留gzip压缩文件的缓存版本确实有意义,并且Apache(可能还有大多数其他服务器)可以配置为这样做.当服务器准备发回gzip压缩响应时,它会根据原始文件的修改时间检查gzip压缩版本的修改时间,如果原始文件已更新,它将再次运行gzip并替换旧版本在缓存中使用新版本.

有时,如果频繁请求,服务器也可以将文件缓存在RAM中.我认为Apache可以配置为这样做,但我不确定. (正如您现在可能已经猜到的那样,使用Apache,所有这些都与配置有关.)

关于如何请求文件的问题,浏览器确实一次要求一个文件.每个HTML页面,CSS文件,Javascript文件,图像文件等对应于一个单独的HTTP请求.如果您感兴趣,像Wireshark这样的工具实际上可以向您显示进出您计算机的各个HTTP请求和响应.但是为了节省资源,TCP / IP连接通常通过一整套请求保持打开状态.例如,如果您有一个包含3个图像和CSS样式表的网页,您可能会得到如下序列:

>浏览器打开连接

>服务器确认连接

>浏览器请求HTML页面

>服务器发送HTML页面

>浏览器请求CSS样式表

>服务器发送CSS样式表

>浏览器请求图像1

>服务器发送图像1

>浏览器请求图像2

>服务器发送图像2

>浏览器使用Connection请求图像3:关闭标题

>服务器发送图像3

>服务器关闭连接

可以由任何一方发送Connection:close标头,以指定在该请求完成后应关闭TCP / IP连接.

希望这主要得到你所要求的,但HTTP规范是一个巨大的文件,我忽略了很多细微之处.我实际上发现这是一个中等有趣的阅读,所以我建议你去看看它(然后再说,我可能有点奇怪).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值