当前位置: 首页 > ops >正文

2025js——面试题(8)-http

题目:

一、http常见的状态码有哪些?

状态码分类:

1XX 服务器收到请求

2XX 请求成功,如200

3XX重定向,如302

4XX客户端错误,如404

5XX服务端错误,如500

常见状态码:

200 成功

301永久重定向(配合location,浏览器自动处理)(域名到期出现的域名)

302临时重定向(配合location,浏览器自动处理)(返回302,然后进入新的地址)

304资源未被修改

404资源未找到

403没有权限

500服务器错误

504网关超时

二、http常见的header有哪些?

常见的Request Headers(客户端发请求到服务端)

1.Accept浏览器可接受的数据格式

2.Accept-Encoding 浏览器可接受的压缩算法

3.Accept-language浏览器可接受的语言。如zh-CN

4.Connection:keep-alive 一次TCP连接重复使用

5.cookie

6.Host:域名

7.user-Agent(简称UA)浏览器信息

8.Content-type发送数据格式,如application/json

常见的Response Headers(服务端返回到客户端)

1.Content-type返回数据格式,如application/json

2.Content-length 返回数据大小,多少字节

3.Content-Encoding 返回数据的压缩算法,如gzip

自定义header

缓存相关的header

Cache-ControlExpires
Last-Modified
Etag
If-Modified-Since
If-None-Match

三、什么是Restful API?

四、描述一下http的缓存机制?(重要)

关于缓存的介绍

完整的流程图

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

1.强制缓存:初次请求服务端设置cache-control

cache-control的值:

max-age:最核心的缓存有效期指令

no-cache:强制进入协商缓存,非 “不缓存”

no-store:完全禁止缓存,每次必请求服务器

指令是否允许本地缓存是否触发协商缓存服务器是否可能返回 304典型应用场景
max-age过期后触发是(资源未更新时)静态资源(图片、JS、CSS)
no-cache是(但需验证)每次请求都触发是(资源未更新时)频繁更新的动态资源(首页 HTML)
no-store否(完全不缓存)无(必须全量请求)否(必返回 200)敏感资源(支付页、隐私数据)

2.协商缓存:

服务端缓存策略

服务端判断客户端资源,是否和服务端资源一样

一致则返回304,否则返回200和最新的资源

协商缓存资源标识

在 Response Headers 中,有两种
Last-Modified 资源的最后修改时间
Etag 资源的唯一标识(一个字符串,类似人类的指纹)

                                                         Last-Modified

                                                

                                                                          Etag

Last-Modified 和 Etag区别
会优先使用 Etag
Last-Modified 只能精确到秒级

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

正常操作:地址栏输入url,跳转链接,前进后退等

手动刷新:F5,点击刷新按钮,右击菜单刷新

强制刷新:ctrl + F5

正常操作:强制缓存有效,协商缓存有效

手动刷新:强制缓存失效,协商缓存有效

强制刷新:强制缓存失效,协商缓存失效

总结:强制缓存 Cache-Control
协商缓存 Last-Modified和 Etag,304 状态码
完整的流程图

http://www.xdnf.cn/news/15387.html

相关文章:

  • YOLOv11开发流程
  • 为什么资深C++开发者大部分选vector?揭秘背后的硬核性能真相!
  • 【第一章编辑器开发基础第二节编辑器布局_3GUI元素和布局大小(3/4)】
  • SpringMVC3
  • JavaScript进阶篇——第二章 高级特性核心
  • 【笔记】chrome 无法打开特定协议或访问特定协议时卡死
  • Flink窗口处理函数
  • 0-1搭建springboot+vue的教务管理系统(核心源码)
  • Spring Boot 自带的 JavaMail 集成
  • Python在量化投资中的应用
  • 庸才的自我唤醒
  • Rust语言实战:LeetCode算法精解
  • Spring Boot 双数据源配置
  • 《解锁音频处理新姿势:探索Librosa的无限可能》
  • C++ 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例
  • vue2/3生命周期使用建议
  • SpringBoot JAR 反编译替换文件
  • OneCode3.0 MCPServer:注解驱动的AI原生服务架构与实践
  • Docker部署语音转文字(STT)服务并接入Home Assistant
  • C++11 std::is_permutation:从用法到原理的深度解析
  • androidstudio 高低版本兼容
  • 破解 VMware 迁移难题:跨平台迁移常见问题及自动化解决方案
  • 【第六节】docker可视化工具portainer安装
  • Angular 框架下 AI 驱动的企业级大前端应用开
  • Docker 拉取镜像并离线迁移至云桌面指南(以Redis为例)
  • 高安全前端架构:Rust-WASM 黑盒技术揭秘
  • 安全初级(一)
  • vscode 源码编译
  • CA-IS3082W 隔离485 收发器芯片可能存在硬件BUG
  • 如何连接 AWS RDS 数据库实例