对于缓存和304状态码的学习

304状态码:
    即客户端第一次向服务器请求资源的时候,服务器会返回一些字段给客户端,客户端便可以判断是否将资源进行缓存;
    当第二次请求的时候,请求头的对应的字段值和服务器的字段值进行比较,若资源修改了,则状态码为200,并重新返回新的字段值和资源,存入缓存中,若没有修改资源,则状态码为304,并直接读取缓存中资源。


一些字段:
    expires:值是一个时间戳,表示过期的时间,当再一次请求时如未超过该值则用缓存的资源,否则重新请求。(该值的判断是通过本地的时间来判断,但本地时间可以修改,所以会有问题)

    Cache-Control:1、值为no-cache:告诉浏览器忽略资源的缓存副本,强制每次请求直接发给服务器。2、no-store:强制缓存在任何情况不要保留副本。3、max-age:指明缓存的有效时长,单位秒数。4、public:任何缓存的地方都可以缓存该资源。5、private:针对于单个用户缓存资源。

    Last-Modified:添加在响应头中,告诉客户端当前资源修改的最后时间。

    if-Modified-Since:添加在请求头中,当第一次请求的时候,响应头的Last-Modified非空,第二次请求的时候会在请求头中加入该字段,之后发给服务器进行判断。

    ETag:告诉浏览器当前资源在服务器的唯一标识符

    if-None-Match:如果第一次请求的时候响应头的ETag
非空,第二次请求的时候,会将第一次的ETag的值携带在请求头中发给服务器。


关于缓存的一些:
浏览器缓存就是指在本地计算机中开辟一个内存区,保存用户访问的一些信息。

浏览器的缓存过程:强缓存,协商缓存。
    强缓存:当访问URL的时候,不会向服务器发送请求,直接从缓存中读取资源,但返回的状态码是200。
    强制缓存会把资源放到memory cache和disk cache,造成强缓存的字段:Cache-control和Expires。

memory cache:内存中的缓存,特点,短期存储,如果有一个页面的缓存占用很多内容,则前面的缓存会失效,将页面关闭,该缓存就会消失,就会查找disk cache里面的内容。
disk cache:存储在硬盘中的缓存,允许跨站点等。


    协商缓存:当强缓存失效(超过规定时间)时,就需要用协商缓存。浏览器会先请求缓存数据库,返回标识,并与服务器比较,若缓存未失效,则返回304继续使用。造成协商缓存的字段:Last-Modified/if-Modified-since  和 ETag/if-None-Match。

 

    总的来说,在网络请求中,当客户端第一次发送请求到服务器的时候,若响应头中设置了cache-control和Last-Modified等,此时客户端判断是否对资源进行缓存,若缓存,则在下一次发送请求的时候,会查看cache-control里面的时间是否到期,若没有则会先从memory cache中获取资源,若关闭了页面,在下次发送请求,会在disk cache中寻找资源,在这之前返回的状态码都是200,当时间到期后,就会用到协商缓存,若对应的标识和服务器的标识是一样的,则此时的状态码是304,返回之前的资源,否则返回新的资源,并且状态码为200。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值