缓存验证Last-Modified和Etag的使用
2024-09-01 13:33:52
缓存工作示意图:
在http协议里面,数据的验证方式,主要有两个验证头:Last-Modified 和 Etag。
Last-Modified 配合Last-Modified-Since或者If-Unmodified-Since使用,对比上次修改的时间验证资源是否需要更新。
Etag 是一个更加严格的数据验证。数据签名[根据数据的内容进行签名,如果数据内容变了,Etag也会变],最典型
的Etag数据签名就是hash计算。配合If-Match或者If-Non-Match使用,对比资源的签名判断是否使用缓存。
if (request.url === '/script.js') {
response.writeHead(200, {
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=200000, no-cache',
'Last-Modified': '123',
'Etag': '777'
})
const etag = request.headers['if-none-match'] if (etag === '777') {
response.writeHead(304, { // 304 表示内容没有变
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=200000, no-cache',
'Last-Modified': '123',
'Etag': '777'
})
response.end('')
} else {
response.writeHead(200, {
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=200000, no-cache',
'Last-Modified': '123',
'Etag': '777'
})
response.end('console.log("script loaded twice")')
}
最新文章
- C# 调用 Oracle
- [UCSD白板题] Binary Search
- 【Win10】UAP/UWP/通用 开发之 RelativePanel
- [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
- python装饰器初探
- js判断一个对象是否包含属性的方式
- !! Scrum之 流程和术语
- C语言的预处理命令
- InsertSort 插入排序
- WEB服务器:Apache、Tomcat、JBoss、WebLogic、Websphere、IIS的区别与关系
- Windows服务器安装Memcache缓存服务及PHP扩展
- 初始Ajax
- javascript监听数组变化
- 使用自定义的Adapter来设置ListView的内容
- e822. 监听JScrollPane的滚动
- javascript中字符串常用操作总结
- LeetCode题解:(114) Flatten Binary Tree to Linked List
- Python全栈开发之16、jquery
- 程序包需要 NuGet 客户端版本“2.12”或更高版本,但当前的 NuGet 版本为“2.8.50313.46”
- 马普尔小姐探案集S02E03【熙阳岭的疑云】