Vary HTTP 标头

2024-05-16 13:36
文章标签 http 标头 vary

本文主要是介绍Vary HTTP 标头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.前言

服务器端 Web 资源缓存的想法是在客户端和上游之间设置一个组件来缓存先前计算的结果,以避免后者过载。根据您的基础架构和要求,此组件可以是反向代理或 API 网关。HTTP 提供Cache-Control标头来自定义缓存的不同方面,例如,服务器在认为资源过时之前将其保存在缓存中的时间。我在上面的文章中使用了插件配置,但您也可以委托给Cache-Control。

关于超文本传输​​协议 (HTTP) 字段名称注册表项目的规范,详见链接:超文本传输​​协议 (HTTP) 字段名称注册表-2024-02-16更新

2.问题

想象一下以下场景。你请求一个资源,例如,GET /blog并得到如下结果:

HTTP/1.1 200 OK
Content-Type: application/json{"id": 1,"title": "CSDN"
}

请求成功;结果被缓存。现在,我请求相同的资源,但由于我的代码是围绕 XML 工作的,因此我将标Accept头设置为application/xml。不幸的是,服务器返回缓存的 JSON 资源,这与我要求的不同,可能会完全破坏我的代码。

问题是,缓存键默认只有一个维度,即 URL。

2.解决方案

我们需要一个可配置的多维缓存键。您现在可能已经猜到了,这就是标Vary头的作用:它明确列出缓存键的所有维度。在上面的示例中,上游将使用以下内容传达附加缓存键:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Language: en
Vary: Accept{"id": 1,"title": "CSDN"
}

我们现在不再为每个 URL 设置一个缓存条目,而是为每个 MIME 类型/URL 组合设置一个缓存条目。请注意,是否使用此信息取决于缓存组件。

另一个常见的请求标头是Accept-Encoding,它通常指定客户端可以接受哪些压缩算法。编码是另一个可能的缓存键。规范允许指定多个缓存键:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Language: en
Vary: Accept, Accept-Encoding{"id": 1,"title": "CSDN"
}

这篇关于Vary HTTP 标头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995056

相关文章

微服务中RPC的强类型检查与HTTP的弱类型对比

在微服务架构中,服务间的通信是一个至关重要的环节。其中,远程过程调用(RPC)和HTTP是两种最常见的通信方式。虽然它们都能实现服务间的数据交换,但在类型检查方面,RPC的强类型检查和HTTP的弱类型之间有着显著的差异。本文将深入探讨这两种通信方式在类型检查方面的优缺点,以及它们对微服务架构的影响。 一、RPC的强类型检查 RPC的强类型检查是其核心优势之一。在RPC通信中,客户端和服务端都使

el-upload 上传图片及回显照片和预览图片,文件流和http线上链接格式操作

<div v-for="(info, index) in zsjzqwhxqList.helicopterTourInfoList" :key="info.id" >编辑上传图片// oss返回线上地址http链接格式:<el-form-itemlabel="巡视结果照片":label-width="formLabelWidth"><el-upload:action="'http:

第三十七章 添加和使用自定义标题元素 - 自定义标头的继承

文章目录 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承自定义标头的继承示例 在 `SOAPHEADERS` 参数中指定支持的标头元素自定义标头的继承 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承 自定义标头的继承 如果创建此Web 服务的子类,该子类将继承不特定于方法的标头信息 — 包含在 <request> 或 <response> 元素中的标头信

HTTP状态码中301与302的区别

一.官方说法  301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved)。  302 redirect: 302 代表暂时性转移(Temporarily Moved )。  这是很官方的说法,那么它们的区别到底是什么呢?  1.1、什么是301转向?什么是301重定向?

使用 axios 进行 HTTP 请求

使用 axios 进行 HTTP 请求 文章目录 使用 axios 进行 HTTP 请求1、介绍2、安装和引入3、axios 基本使用4、axios 发送 GET 请求5、axios 发送 POST 请求6、高级使用7、总结 1、介绍 什么是 axios axios 是一个基于 promise 的 HTTP 库,可以用于浏览器和 Node.js 中发送 HTT

HTTP基本概念介绍

HTTP概述 HTTP : 超文本传输协议,HTTP是浏览器端Web通信的基础。 一, 两种架构 B/S架构:Browser/Server,浏览器/服务器架构。 B:  浏览器,比如Firefox 、Google 、Internet; S:  服务器,Apache,nginx; C/S架构:Client/Server,客户端/服务器架构。 B/S架构相对于C/S架构,客户机上无需安装任何软件

网络编程篇:HTTP协议

一.预备知识 在客户端访问服务端时,要用ip+port,但是在日常用户访问服务端的时候,并不会直接使用ip,而是使用域名,比如:百度(www.baidu,com)。                                                                                    在浏览器处理时,会将域名解析为对应的ip+port。

基于http协议的接口测试(2)

一).接口约定: 1、接口均采用http协议,Get方法。 2、城市公交请求参数为app_key、city、start_addr、end_addr,app_key为需要你申请密钥key http://openapi.aibang.com/bus/transfer?app_key=????&city=????&start_addr=????&end_addr=???? 如果不清楚请求

http:与https:到底有哪些区别?

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的,... HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全

http请求获取到的网页源码是字节数组还是字符串?

http请求获取到的网页源码是字节数组,并不是字符串。只有识别了网页所用的编码,例如utf8,将字节数组根据编码的规则, 进行解码,才可以获得网页源码的字符串。编码是将字符串转换为字节数组的过程,解码是将字节数组转换成字符串的过程。