网络 - 基本知识

Cache-Control

Cache-Control是服务器返回的 Response 中的 Header 所包含的信息,目的是告诉客户端从本地读取缓存还是从网络获取。(expires等同于Cache-Control,不过是 Http 1.0 的内容)

|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| max-age | 这个参数告诉浏览器将页面缓存多长时间,超过这个时间后才再次向服务器发起请求检查页面是否有更新。对于静态的页面,比如图片、CSS、Javascript,一般都不大变更,因此通常我们将存储这些内容的时间设置为较长的时间,这样浏览器会不会向服务器反复发起请求,也不会去检查是否更新了。 |
| no-cache | 不做缓存。 |
| max-stale | 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。 |
| public | 告诉缓存服务器, 即便是对于不该缓存的内容也缓存起来,比如当用户已经认证的时候。所有的静态内容(图片、Javascript、CSS等)应该是public的。 |
| private | 告诉proxy不要缓存,但是浏览器可使用private cache进行缓存。一般登录后的个性化页面是private的。 |
| s-maxage | 这个参数告诉缓存服务器(proxy,如Squid)的缓存页面的时间。如果不单独指定,缓存服务器将使用max-age。对于动态内容(比如文档的查看页面),我们可告诉浏览器很快就过时了(max-age=0),并告诉缓存服务器(Squid)保留内容一段时间(比如,s-maxage=7200)。一旦我们更新文档,我们将告诉Squid清除老的缓存版本。 |
| must-revalidate | 这告诉浏览器,一旦缓存的内容过期,一定要向服务器询问是否有新版本。 |
| proxy-revalidate | proxy上的缓存一旦过期,一定要向服务器询问是否有新版本。 |
| no-store | 数据不在硬盘中临时保存,这对需要保密的内容比较重要。 |
| no-transform | 告诉proxy不进行转换,比如告诉手机浏览器不要下载某些图片。 |

|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| expires | 效果等同于Cache-Control,不过它是Http 1.0的内容,它的作用是告诉浏览器缓存的过期时间,在此时间内浏览器不需要直接访问服务器地址直接用缓存内容就好了。 expires最大的问题在于如果服务器时间和本地浏览器相差过大的问题。那样误差就很大。所以基本上用Cache-Control:max-age=多少秒的形式代替。 |
| Last-Modified | Last-Modified标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。 If-Modified-Since:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上头 |
| If-Modified-Since | 表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。 |
| Etag | 对应请求的资源在服务器中的唯一标识(具体规则由服务器决定),比如一张图片,它在服务器中的标识为ETag: W/"ACXbWXd1n0CGMtAd65PcoA=="。Etag机制比Last-Modified精确度更高,如果两者同时设置的话,Etag优先级更高。 |
| If-None-Match | 如果浏览器在Cache-Control:max-age=60设置的时间超时后,发现消息头中还设置了Etag值。然后,浏览器会再次向服务器请求数据并添加In-None-Match消息头,它的值就是之前Etag值。服务器通过Etag来定位资源文件,根据它是否更新的情况给浏览器返回200或者是304。 |
| Pragma | Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。 |

相关推荐
深海呐4 小时前
Android AlertDialog圆角背景不生效的问题
android
ljl_jiaLiang4 小时前
android10 系统定制:增加应用使用数据埋点,应用使用时长统计
android·系统定制
花花鱼4 小时前
android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。
android
落落落sss5 小时前
sharding-jdbc分库分表
android·java·开发语言·数据库·servlet·oracle
消失的旧时光-19437 小时前
kotlin的密封类
android·开发语言·kotlin
服装学院的IT男9 小时前
【Android 13源码分析】WindowContainer窗口层级-4-Layer树
android
CCTV果冻爽10 小时前
Android 源码集成可卸载 APP
android
码农明明10 小时前
Android源码分析:从源头分析View事件的传递
android·操作系统·源码阅读
秋月霜风11 小时前
mariadb主从配置步骤
android·adb·mariadb
Python私教12 小时前
Python ORM 框架 SQLModel 快速入门教程
android·java·python