HTTP协议之ETag
程序员文章站
2024-02-28 18:41:28
...
前言
在HTTP1.1规范中,新增了一个HTTP头信息:ETag;协商缓存。
作用
Etag是 Entity tag的缩写,可以理解为“被请求变量的实体值”,Etag是服务端的一个资源的标识,在 HTTP 响应头中将其传送到客户端。所谓的服务端资源可以是一个Web页面,也可以是JSON或XML等。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。比如,浏览器第一次请求一个资源的时候,服务端给予返回,并且返回了ETag: “50b1c1d4f775c61:df3” 这样的字样给浏览器,当浏览器再次请求这个资源的时候,浏览器会将If-None-Match: W/“50b1c1d4f775c61:df3” 传输给服务端,服务端拿到该ETAG,对比资源是否发生变化,如果资源未发生改变,则返回304HTTP状态码,不返回具体的资源,节省服务器开销。比如七牛云就用到了ETag。
实现
php中间件
public function handle(Request $request, Closure $next)
{
$key = \Cache::get($request->getBaseUrl());
if ($key && $key === $request->header('If-None-Match')) {
return \response(null, 304)->header('ETag', $key);
}
$response = $next($request);
if ($key) {
$response->header('ETag', $key);
}
return $response;
}
推荐阅读
-
http协议-缓存控制:etag If-None-Match / Last-Modified If-Modified-Since
-
HTTP协议之ETag
-
Java与Http协议的详细介绍
-
python爬虫入门教程--快速理解HTTP协议(一)
-
Java HTTP协议收发MQ 消息代码实例详解
-
http协议进阶之Transfer-Encoding和HttpCore实现详解
-
Java与Http协议的详细介绍
-
基于HttpClient在HTTP协议接口测试中的使用(详解)
-
WWW的核心——HTTP协议 博客分类: WEB 网络协议应用服务器网络应用虚拟机浏览器
-
WWW的核心——HTTP协议 博客分类: WEB 网络协议应用服务器网络应用虚拟机浏览器