前端面试知识点梳理——http

187 阅读4分钟

http状态码

状态码分类

  • 1xx 服务器收到请求
  • 2xx 请求成功,如200
  • 3xx 重定向,如302
  • 4xx 客户端错误,如404
  • 5xx 服务端错误,如500

常见状态码

  • 200 成功
  • 301 永久重定向(一般用于老域名过期,永久跳到新地址)
  • 302 临时重定向(每次都访问老地址,在跳到新地址,搜索引擎用的比较多)
  • 304 资源已被请求过且未被修改 not modified
  • 401 Unauthorized当前请求需要用户验证
  • 403 Forbidden 服务器已经收到请求,但拒绝执行 //没有权限
  • 404 Not Found 服务器无法根据用户的请求找到资源 //文件不存在或者请求路径有问题
  • 500 服务器错误
  • 504 网关超时

关于协议和规范

  • 就是一个约定
  • 要求大家都了解并遵循
  • 不要违反规范,例如IE浏览器被淘汰

http methods

传统的methods

  • get 获取服务器的数据
  • post 向服务器提交数据
  • 简单的网页功能,就这两个操作

现在的methods

  • get 获取数据
  • post 新建数据
  • path/put 更新数据
  • delete 删除数据

Restful API

  • 一种新的API设计方法(早已推广使用)
  • 传统API设计:把每个url当做一个功能
  • Restful API设计:把每个url当做一个唯一资源
    • 尽量不用url参数 
      • 传统API设计:/api/list?pageIndex=2
      • Restful API设计:/api/list/2
    • 用method表示操作类型

http headers

常见的 Request Headers

  • Accept:浏览器可接受的数据格式
  • Accept-Encoding:浏览器可接受的压缩算法,如gzip
  • Accept-Languange浏览器可接受的语言,如zh-CN
  • Connection:keep-alive一次TCP连接可以重复使用
  • cookie
  • Host
  • User-Agent(简称UA)浏览器信息
  • Content-type发送数据的格式,如application/json、text/html

常见的 Response Headers

  • Content-type: 返回数据的格式,如application/json 
  • Content-length: 返回数据的大小,多少字节 
  • Content-Encoding: 返回数据的压缩算法,如gzip 
  • Connection:keep-alive 一次TCP连接重复使用 
  • Set-Cookie: 服务端需要通过该字段来修改浏览器中的cookie    

缓存相关 Headers

  • Cache-Control   Expires
  • last-Modified   if-Modified-Since
  • etag            if-None-Match 

http 缓存

关于缓存的介绍

  • 什么是缓存?
    保存资源副本并在下次请求时直接使用该副本的技术。当Web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。
  • 为什么需要缓存
    • 减少不必要的网络请求,使得页面加载更快;
    • 网络请求是不稳定,加大了页面加载的不稳定性;
    • 网络请求的加载相比于cpu加载 & 页面渲染都要慢.
  • 哪些资源可以被缓存
    静态资源(js、css、img)

http缓存策略(强制缓存 + 协商缓存)

  • 强制缓存
    • 什么是Cache-Control
      • 哪些文件可以缓存,需要服务端进行设置。
      • Response Headers 中
      • 控制强制缓存的逻辑
      • 例如:Cache-Control:max-age = 31536000(单位是秒)
      • 图示 Cache-Control
    • Cache-Control的值:
      • max-age  : 最长过期时间(秒) 
      • no-cache : 不用本地强制缓存,正常向服务端请求资源,由服务端决定缓存措施
      • no-store (不常见): 不用本地强制缓存,也不用服务端的缓存措施(协商缓存),直接由服务端返回新资源 
      • private : 只允许最终用户缓存 
      • pubilc : 用户和中间的代理都能缓存资源
  • 协商缓存(对比缓存)
    • 服务器端缓存策略(不是在服务器端缓存)
    • 服务器判断客户端资源,是否和服务端资源一样
    • 一致则返回304,否则返回200和最新的资源
    • 图示 协商缓存
    • 资源标识(在Response Headers中)
      • Last-Modified资源的最后修改时间
        • 图示 Last-Modified
      • Etag资源的唯一标识(一个字符串,类似人类的指纹)
        • 图示 Etag
      • 二者区别
        • 会优先使用Etag
        • last-Modified 只能精确到秒级
        • 如果资源被重复生成,而内容不变,则Etag更精准
  • 缓存综述流程图 流程图

刷新操作方式,对缓存的影响

  • 正常操作 : 地址栏输入url ,跳转链接,前进后退等 ; 两种缓存都有效
  • 手动刷新 : F5 ,点击刷新按钮,右击菜单刷新 ; 仅协商缓存有效
  • 强制刷新 : ctrl +f5 cmd + r ; 都无效