浏览器缓存一直是web开发人员比较重视的优化点
这要有这个几个http header来控制:
Cache-Control中的max-age
expires
Last-Modified
ETag
其中max-age 和 expires可分在一组
Last-Modified 和 ETag分在一组
下面讲一下两组的区别
max-age 和 expires
当浏览器再次请求一个资源时会检查缓存响应中的max-age,如果没有过期则直接使用缓存中的数据,‘刷新’浏览器例外;
expires的作用跟max-age一样,区别在于同时存在时max-age会覆盖expires
max-age可用在image css js等不常变化的资源
Last-Modified 和 ETag
这个两个头跟上面的区别在于必须发送请求到服务器,服务器来判断是否发送响应体
Last-Modified必须与If-Modified-Since配合使用
工作过程如下:
1 服务器发送带有Last-Modified头的响应给浏览器,浏览器缓存之
2 再次请求改页面时,浏览器会把上次Last-Modified的时间用If-Modified-Since头发送给服务器
3 服务器检查If-Modified-Since时间是否过期,如果过期发送新数据;否则发送304告诉浏览器缓存数据时有效的
Etag的原理跟Last-Modified基本上是一样的
上述两种缓存方式都可降低对服务器的压力, 节约了网络带宽 提高了服务器的处理能力
另外gzip也是比较简单且有效的节约带宽方式
=============================================
刚才用etherreal抓包
max-age=604800 时,浏览器不发送任何请求
刷新浏览器则发送http get /images/aaa.gif 返回的是304状态
分享到:
相关推荐
例如,`Cache-Control: no-cache`意味着每次请求都应该向服务器验证是否更新了资源;`Cache-Control: max-age=3600`表示响应可以被缓存一小时。理解并正确设置`Cache-Control`对于优化网站性能和减少网络流量至关...
在MATLAB环境中进行路径跟随控制(Path-Following Control)是一项常见的工程应用,尤其是在自动驾驶、无人机导航、水下机器人等领域。本笔记将深入探讨MATLAB中的路径跟随控制系统设计与仿真。...
- **请求头**:`Cache-Control: no-cache` 表示不使用任何缓存副本。 2. **Expires** - **概述**:Expires是HTTP1.0中使用的头部,指定资源的到期时间。然而,由于客户端与服务器之间可能存在时间偏差,因此在...
[OPTIONS] [-] [root] FLAGS:--cors通过“ Access-Control-Allow- Origin“标头-h,--help打印帮助信息-i,--index启用自动呈现索引页[index.html,index.htm] --nocache禁用http缓存--norange禁用header :: Range...
窗口标题小程序 这是一个Plasma 5小程序,可在面板中显示当前的窗口标题和图标。 这种浆体来自但它也可以支持等离子板。 窗口标题留给Plasma 5全局菜单 外观设置 行为设定 需要 血浆> = 5.8 ...
MIL-STD-3071_2023 Tactical Microgrid Communications and Contro
3. `Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'`:设置允许的请求头,防止因特定请求头未被服务器...
国外的一篇介绍无模型自适应控制的论文~~很好的文章
文件"7638-data-center-cooling-using-model-predictive-control.pdf"很可能包含了关于MPC在实际数据中心冷却应用中的详细案例、理论基础、算法实现以及性能评估。可能的内容包括: 1. **MPC的基本原理**:解释模型...
####结构index.jade #bootstrap angular assets/ #images, sass 等 app/ #angular --common/ # 模块可能会在许多 --components/ 中重用 # 基于关注的模块 | --home/ | --index.coffee # bootstraps --contro
灰烬代理控制器 将Ember.ObjectController和Ember.ArrayController提取为独立的插件。 安装 运行ember install ember-proxy-controllers ,一切顺利 ...import ObjectController from 'ember-proxy-contro
含可再生能源的配电网最佳空调负荷优化控制 该程序复现《Optimal air-conditioning load control in distribution network with intermittent renewables》,中文题目(翻译)为《含可再生能源的配电网最佳空调负荷...
JavaWeb图书管理系统是一个基于Java语言和Web技术的应用程序,旨在为图书馆或图书管理机构提供一个高效、便捷的管理平台。该系统通过Web界面实现图书的添加、删除、...JavaWeb图书管理系统采用MVC(Model-View-Contro
《异步电动机矢量控制系统的深度解析及MATLAB-SIMULINK仿真》 异步电动机,作为工业生产中最常见的电动机类型,其运行效率和动态性能在很大程度上决定了设备的工作效能。为了提高异步电动机的控制精度和响应速度,...
在本例中,我们关注的是如何使用Contro X2000通过DDE方式从VB(Visual Basic)环境中读取数据。Contro X2000可能是一个工业自动化或控制系统,而VB则被用来处理数据,如从PLC(可编程逻辑控制器)获取I/O值。 在VB...
高速绘图(轴固定时),允许快速绘制数据 无限数量的数据序列(内存是限制) 每个数据序列的数据量不受限制 支持线图,点图,平面图,柱状图,K线图 和甘特图系列 最多四个轴(左,下,右和上轴) ...
目的 该项目主要用于向您展示如何使用 Ionic 代理服务器在没有 CORS 的情况下访问 API。 这个项目有两个部分: ... XMLHttpRequest cannot load http://localhost:3000/api/endpoint. No 'Access-Contro
异步电机间接矢量控制Simulink仿真模型,带有转速外环和Iq、Id两个内环,转速和负载指令阶跃变化,3/2变换为恒幅值变换,不包含弱磁控制,磁链指令为恒值。PWM调制算法采用空间矢量调制(SVPWM)。
### SVN版本控制系统详解及安装指南 #### 一、SVN简介 **Subversion**(简称SVN)是一款开源的版本控制系统,用于管理文件和目录的变化历史。它允许用户恢复早期版本的数据,或者查看数据如何随时间变化。...
关于"Allow-Control-Allow-Origin"的详细知识点: 1. 同源策略:这是浏览器安全特性,限制了来自不同源(协议+域名+端口)的JavaScript代码对页面内容的访问。同源策略是为了防止恶意网站读取或修改敏感数据。 2. ...