浏览器缓存

简介: HTTP缓存依赖Cache-Control与ETag机制。Cache-Control通过public、private、no-cache等指令控制缓存范围与行为,max-age、s-maxage设定有效期;ETag为资源生成唯一标识,结合If-None-Match实现协商验证。内容不变则返回304,减少传输。配合文件名哈希可实现长效缓存与及时更新。

Note
Http 的缓存主要利用 header 里的Cache-control 和 ETag
1.Cache-control
1.1 Cache-control主要字段

public

指HTTP请求返回的资源在所经过的所有路径包括一些中间代理服务器以及发出这个请求的客户端浏览器都可以进行缓存

private

代表发起请求的浏览器才可以进行缓存

no-cache

指可以存缓存,但是每次使用都需要去服务端验证

no-store

本地和代理服务器都不允许去缓存

no-transform

不允许代理/缓存服务器转换文件格式
1.1.1 到期

max-age=

缓存到期时间

s-maxage=

代理服务器专用

max-stale=

指示客户机可以使用超出max-age时间的响应
1.1.2 重新验证

must-revalidate

设置了max-age的资源过期后必须到源服务端验证资源是否还可用

proxy-revalidate

(缓存服务器用)设置了max-age的资源过期后必须到源服务端验证资源是否还可用
1.2 Etag
1.2.1 ETag资源标识码
即用来进行对比缓存,Etag 是服务端资源的一个标识码
当客户端发送第一次请求时服务端会下发当前请求资源的标识码 Etag,下次再请求时,客户端则会通过 header 里的 If-None-Match 将这个标识码 Etag 带上,服务端将客户端传来的 Etag 与最新的资源 Etag 做对比,如果一样,则表示资源没有更新,返回 304。

  1. 缓存方案
    2.1 需求
    有的静态资源会设置一个较长的缓存时间,但是我们希望用户还是能使用最新的资源。
    2.2 解决方案
    在打包完成的文件名上加上一串哈希码,这个哈希码是根据内容进行的哈希计算。 所以,如果你的内容文件没有变,那么这个hash码不会变,即这个静态资源的url没有变。 而如果内容有变,那么hash码也会变,浏览器就会去请求新的资源请求。
    2.3 普通的缓存机制
    请求响应,缓存协商向WEB服务器请求带LF-NONE-MATCH向WEB服务器请求是否过期?200OR304?LAST-MODIFIED2从缓存读取向WEB服务器请求浏览器请求从缓存读取服务器决策节IF-MODIFIED-SINCEETAG?有缓存早现304200
    image.png

2.4 资源验证
如果给Cache-Control设置了no-cache后,每次要使用资源时浏览器都要到服务器验证缓存是否过期。 如果直接使用缓存,返回码:304
2.5 如何验证资源是否过期:

Last-Modified(上次修改时间)

配合 If-Modified-Since 或 If-Unmodified-Since 使用

如果请求的资源头中有Last-Modified这个头,这个头指定了一个时间。那么浏览器重新访问资源时就会带上If-Modified-Since这个头,其时间是Last-Modified的时间,服务器就会拿这个时间去对比上次修改的时间,然后告诉浏览器是否可以直接使用。

Etag (数据签名)

资源会依据它的内容产生一个唯一的数据签名,如果资源有更新,那么Etag就会发生变化。

配合 If-Match 或 If-None-Match 使用

相关文章
|
4月前
|
负载均衡 监控 API
Xinference × 阿里云计算巢:大模型推理,终于不用“自己搭火箭”了!
Xinference是企业级大模型推理操作系统,解决GPU混用、多模型并行、高可用缺失等生产难题;阿里云计算巢实现“一键交付”,10分钟完成集群部署、模型加载与API开通,让大模型真正稳、管、用。
574 4
|
6月前
|
存储 负载均衡 Java
第九章 SpringCloud框架
Nacos实现服务注册与发现,支持心跳检测、负载均衡及配置管理;Eureka功能类似但仅限注册中心。两者均支持AP模式集群,而Nacos提供更灵活的分级存储模型。OpenFeign结合LoadBalancer实现服务调用,Sentinel用于限流熔断,Gateway则通过路由断言与过滤器实现请求路由、鉴权、限流等网关功能。
147 0
|
6月前
|
机器学习/深度学习 存储 知识图谱
知识蒸馏
知识蒸馏是一种模型压缩技术,通过将大模型(教师)的知识迁移到小模型(学生)中,在降低计算成本的同时提升小模型性能。核心思想是让学生模仿教师的输出分布或中间特征。常用方法包括基于软标签的Hinton蒸馏(引入温度提升泛化信息)、特征蒸馏(对齐中间层表示)。按信息访问程度分为黑盒(仅输出)与白盒(含内部结构)。广泛用于加速推理与模型轻量化。
293 0
|
6月前
|
存储 人工智能 JSON
Agent系统
大模型Agent是具备自主规划、推理、工具调用与记忆能力的智能系统,能分解任务、反思调整并持续交互。核心架构含大脑(LLM)、感知、行动与记忆模块,支持函数调用与多Agent协作,广泛应用于复杂任务场景,区别于传统Chatbot,更具主动性与执行力。
273 0
|
6月前
|
机器学习/深度学习 存储 数据采集
高频面试题汇总
本文系统梳理大模型核心技术,涵盖Transformer自注意力机制、多头注意力、位置编码原理,详解LLaMA与GPT架构差异,解析LoRA、ZeRO优化策略,介绍FlashAttention内存优化,并提供显存与训练时间估算方法,覆盖训练、推理、部署全流程关键技术点。
1063 0
|
6月前
|
缓存 算法 C++
模型推理加速
大模型推理加速关键技术包括KV-Cache优化、连续批处理、投机解码与模型并行等,涵盖算法、系统与硬件协同优化。vLLM等框架通过PagedAttention提升效率,助力高并发、低延迟场景落地。
378 0
|
6月前
|
存储 人工智能 NoSQL
RAG技术
RAG(检索增强生成)通过结合外部知识库与大模型,提升回答准确性,缓解知识过时与幻觉问题。核心架构含检索器、生成器与向量数据库,支持密集、混合检索,常用FAISS、Pinecone等工具,广泛应用于问答系统与AI面试场景。(238字)
227 0
|
6月前
|
NoSQL Java 数据库连接
第七章 SpringBoot框架
SpringBoot简化了Spring应用开发,核心功能包括:starter起步依赖简化配置、自动配置根据条件加载Bean、内嵌服务器支持jar包运行。通过@SpringBootApplication实现自动化配置,自定义starter可封装通用功能,配置优先级为:命令行参数 > 系统属性 > properties > yml/yaml文件。
362 0
|
6月前
|
存储 机器学习/深度学习 编解码
预训练技巧
预训练是大模型能力的核心,涵盖混合精度、分布式训练等关键技术。混合精度通过FP16/BF16加速计算并节省显存;分布式训练采用数据、模型、流水线并行提升效率,结合All-Reduce等通信策略实现高效同步;DeepSpeed的ZeRO技术分区优化器状态、梯度与参数,显著降低显存占用;FlashAttention优化注意力机制,提升速度与内存效率;学习率策略如warmup与余弦退火助力稳定收敛。
439 0
|
6月前
|
机器学习/深度学习 算法 关系型数据库
强化学习
强化学习(RL)是一种通过智能体与环境交互来学习最优策略的机器学习方法,核心是最大化长期累积奖励。其关键概念包括状态、动作、奖励、策略与价值函数,依赖试错和延迟奖励机制。常用方法有基于值的Q-learning、基于策略的Policy Gradient,以及结合两者的Actor-Critic框架。PPO、DPO等算法在实际中广泛应用,尤其在RLHF中优化语言模型。该领域持续发展,追求高效、稳定与实用的决策智能。
569 0