美文网首页
HTTP缓存问题

HTTP缓存问题

作者: sunpy | 来源:发表于2019-04-04 15:08 被阅读0次

介绍

平时我去学习Http应用层协议的时候,对于Http的结构和请求头字段的作用方面掌握了一些知识点,但是没有系统化解决一些问题,所以导致理解不深,最近遇到面试题,正好反思下Http缓存什么情况请求服务器,什么情况下直接使用浏览器缓存。

例子

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    <body>
        <img src="images/head.png" />
        <a href="page.html">重新访问page页</a>
    </body>
</html>

第一次请求:

first request.png
说明:
第一次浏览器发送请求到服务器,发送请求头 Cache-Control字段为no-cache,no-cache会将数据缓存到本地,但是下次会强制向服务器发起验证。服务器向客户端返回最后修改时间Last-modified和服务器资源标识ETag(服务器会为每个资源都分配一个ETag,作为唯一标识,如果资源发生一些细微修改,就会加上W/".......")。因为第一次请求没有访问浏览器的本地缓存,所以返回响应状态码为200,然后将当前的资源缓存到浏览器本地。

第二次请求:


second request.png

说明:
第二次浏览器发送请求到服务器,不是直接去请求资源,而是验证当前浏览器的缓存是否有效。服务器主要比对的请求头字段是If-Modified-Since判断最后修改时间是否匹配和请求头字段If-None-Match指定当前的资源。
如果发现字段If-None-Match指定的资源判断字段If-Modified-Since时间大于最后修改时间,那么就从服务器上将资源重新返回响应码为200,如果小于等于最后修改时间,说明资源没有发生修改,那么就直接使用浏览器本地缓存,返回响应码为304。

相关文章

  • HTTP缓存问题

    在客户端第一次请求数据时,此时缓存数据库中没有对应的缓存数据,需要请求服务器,服务器返回后,将数据存储至缓存数据库...

  • HTTP缓存问题

    介绍 平时我去学习Http应用层协议的时候,对于Http的结构和请求头字段的作用方面掌握了一些知识点,但是没有系统...

  • Http GET请求缓存问题

    GET 缓存导致的问题 在iOS 客户端通过AFNetworking 发起 GET 方式的HTTP请求时,导致数据...

  • HTTP缓存原理

    什么是HTTP缓存 HTTP缓存通常指浏览器缓存,基于HTTP中header字段实现HTTP缓存分为强缓存和协商缓...

  • 使用Redis构建web应用

    登录和cookie缓存 购物车 网页缓存 数据行缓存 网页分析代码格式有问题,见谅 欢迎访问本人博客:http:...

  • 前端缓存

    前端缓存 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务...

  • 移动端index.html被缓存问题

    在移动端,我们为了解决带宽限制或者网络缓慢等问题,常常会使用http协议缓存静态文件(http缓存简介),从而减少...

  • 前端缓存详解

    一、前言 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务...

  • 前端 http 缓存

    前端面试常问第二大问题是http缓存相关内容。说真的,http缓存相关的细节比较多,并且 http 常用协议版本有...

  • PWA笔记一:Web的万物基础缓存

    前言 这里讨论的缓存包括两种,一种是HTTP缓存,一种是Service Worker缓存。 HTTP缓存 HTTP...

网友评论

      本文标题:HTTP缓存问题

      本文链接:https://www.haomeiwen.com/subject/ojrfiqtx.html