http常考面试题(包括缓存策略)

http

  • http常用状态码有哪些?
    见知识点-状态码
  • http常见的header有哪些?
    见知识点-http headers
  • 什么是Restful API?
    见知识点-http methods
  • 描述一下http的缓存机制(重要)
    见知识点http缓存
知识点
  1. 状态码

    • 状态码分类
      1xx 服务器收到请求
      2xx 请求成功
      3xx 资源重定向
      4xx 客户端错误
      5xx 服务端错误
    • 常见状态码
      200 成功
      301 永久重定向(浏览器自动处理)
      302 临时重定向(浏览器自动处理)
      304 资源未改变(使用浏览器缓存)
      404 资源未找到
      403 没有权限
      500 服务器错误
      504 网关超时
    • 关于协议和规范
      这个协议就是一个一个规定,不要违反协议,例如IE
  2. http methods

    • 传统的method:
      get 获取服务器数据
      post 向服务器提交数据
    • 现在的method:
      get 获取数据
      post 新建数据
      put/patch 更新数据
      delete 删除数据
  3. Restful API

    • 一种新的API设计方法
    • 缺点:无法批量查询
      restful API设计之初时将URL当作一个唯一资源,所以根据URL无法进行批量查询
    • 传统的API设计:把每个URL当作一个功能
    • Restful API设计:把每个URL当作唯一的资源
      设计原则:
      1. 尽量不用URL参数:/api/list?page=2 => /api/list/2
      2. 用method表示操作类型:/api/update_blog?id=100(post请求) => /api/blog/100(patch请求)
  4. http headers

    • Request Headers:
      Accept 浏览器可接收的数据格式
      Accept-Encoding 浏览器可接收的压缩算法,如gzip
      Accept-Languange 浏览器可接收的语言
      Connection:keep-alive 一次TCP连接重复使用
      Cookie
      Host 请求的域名
      User-Agent 浏览器信息
      Content-Type 发送数据的格式
    • Response Headers:
      Content-Type 返回数据的格式
      Content-Length 返回数据的大小
      Content-Encoding 返回数据的压缩算法
      Set-Cookie 服务端修改cookie
    • 自定义Header
      Authorization 权限验证的header
    • 缓存相关的Header
      Cache-Control Expires
      Last-Modified If-Modified-Since
      Etag If-None-Match
  5. http缓存

    • 缓存介绍:
      缓存就是让同一份资源不再发起请求,降低网络压力和资源数量,从而让网页加载更快。
      网络请求不稳定加剧了网页加载的不稳定性,所以需要缓存。
      一般来说,js、css、img等静态资源可以被缓存
    • http缓存策略:
    1. 强制缓存(Cache-Control)
      在这里插入图片描述
      cache-control在response-headers中,用于对缓存资源的控制,该属性可以控制强制缓存的逻辑,例如:Cache-Control: max-age=31536000(单位是秒)。
      当再次请求时,先检查过期与否,若没有过期,则直接从缓存里拿数据,反之再次向服务器请求
      Cache-Control的值:

      • max-age
      • no-cache(不用本地缓存)
      • no-store(不用本地和服务端的缓存)

      在现代浏览器中兼容Expires和Cache-Control,不过优先使用Cache-Control

    2. 协商缓存(对比缓存)
      在这里插入图片描述
      协商缓存是服务端缓存策略(服务端判断该资源能否被缓存,而不是资源缓存在服务端),判断依据是客户端和服务端的资源标识是否一样,若一样则返回304,否则返回200和最新的资源、资源标识(资源标识在response headers中)
      资源标识:
      Last-Modified(客户端再次请求时,request headers带着if-Modified-Since) 资源的最后修改时间

      Etag 资源的唯一标识(客户端再次请求时,request headers带着if-None-Match)(一个字符串)
      当两种资源标识共同存在时,优先使用Etag,因为Last-Modified只能精确到秒级,而Etag唯一
      在这里插入图片描述

    • 刷新操作方式,对缓存的影响:
    1. 正常操作:地址栏输入URL,跳转链接,前进后退等,强制缓存和协商缓存均有效
    2. 手动刷新:F5,点击刷新按钮,右键菜单刷新,强制缓存失效,协商缓存有效
    3. 强制刷新:ctrl+F5,强制缓存和协商缓存均无效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值