缓存验证Last-Modifie和Etag的使用

// server.js
const http = require('http');
const fs = require('fs'); http.createServer(function(req,res){
console.log('req come', req.url); if (req.url === '/') {
const html = fs.readFileSync('test.html', 'utf8');
res.writeHead(200,{
'Content-Type': 'text/html'
})
res.end(html);
} if (req.url === '/script.js') {
res.writeHead(200,{
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=2000000000, no-cache', // 缓存时间很长,但是下次请求时还是需要通过服务端验证
'Last-Modified': '123',
'Etag': '777'
})
res.end('console.log("script loaded")');
}
}).listen(8888); console.log('server listening on 8888');
console.log('http://localhost:8888/')
<!--test.html-->
<body>
<script src='/script.js'></script>
</body>

//server.js
const http = require('http');
const fs = require('fs'); http.createServer(function(req,res){
console.log('req come', req.url);
if (req.url === '/') {
const html = fs.readFileSync('test.html', 'utf8');
res.writeHead(200,{
'Content-Type': 'text/html'
})
res.end(html);
} if (req.url === '/script.js') {
console.log(req.headers);
const etag = req.headers['if-none-match'];
if (etag === "777") {
res.writeHead(304, {
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=2000000000, no-cache', // 缓存时间很长,但是下次请求时还是需要通过服务端验证
'Last-Modified': '123',
'Etag': '777'
})
res.end('');
} else {
res.writeHead(200,{
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=2000000000, no-cache', // 缓存时间很长,但是下次请求时还是需要通过服务端验证
'Last-Modified': '123',
'Etag': '777'
})
res.end('console.log("script loaded")');
}
}
}).listen(8888); console.log('server listening on 8888');
console.log('http://localhost:8888/');
缓存验证Last-Modifie和Etag的使用的更多相关文章
- HTTP缓存——协商缓存(缓存验证)
协商缓存 所谓"协商",可以理解为:客户端和服务端双方商量着来. 客户端检查资源超过有效期.强缓存命中失败的情况下,则发出请求"询问"服务器是否资源真的过期了, ...
- 缓存验证Last-Modified和Etag的使用
缓存工作示意图: 在http协议里面,数据的验证方式,主要有两个验证头:Last-Modified 和 Etag. Last-Modified 配合Last-Modified-Since或者If-Un ...
- HTTP 缓存之ETag 和Cache-Control的使用方法介绍
什么是http缓存,有什么作用 通过网络获取内容既速度缓慢又开销巨大.较大的响应需要在客户端与服务器之间进行多次往返通信,这会延迟浏览器获得和处理内容的时间,还会增加访问者的流量费用.因此,缓存并重复 ...
- http强制缓存、协商缓存、指纹ETag详解
目录 实操目录及步骤 缓存分类 强制缓存 对比缓存 指纹 Etag 摘要及加密算法 缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的数据传输,节省网络传输.减少服务器负 ...
- Expires、Last-Modified、Etag缓存控制
当请求一个页面时,如果浏览器使用本地缓存,因此我们经常会看到一个HTTP请求为304状态.或者显示200状态,在chrome下标注是from cache,在火狐下会标注BFCache: 我们希望在服务 ...
- 作为前端应当了解的Web缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...
- 前端学HTTP之缓存
前面的话 Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关内容 功能 ...
- 前端应当了解的Web缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...
- NSCache和NSURLCache、网络缓存优化
本文目录 一种缓存优化方案 响应头'Last-Modified'和请求头'If-Modified-Since' 'Keep-Alive'响应头和不离线的URLSession 'Expires'响应头 ...
随机推荐
- 2.Spring的Bean生命周期和组装方式
1.Spring IoC容器概述 Spring IoC容器: Spring容器即体现了IoC原理 Spring容器通过读取配置元数据负责对Beans实例化.配置和装配 配置元数据可以用X ...
- IIS Express 无法启动
IIS Express 无法启动1. \.vs\config\applicationhost.config2. 打开.csproject 中把 <UseIIS> 改成 False ---- ...
- ubuntu下找不到eth0
1.,查找不到eth0 2.修改/etc/network/interface 发现没有eth0网卡信息 添加如下 autho eth0 iface eth0 inet dhcp 执行 sudo /et ...
- js网页瀑布流布局
瀑布流布局思路: 1.css样式,图片的父级div样式设置为定位或者浮动 2.找出图片父级元素(box)和最外元素(main):获取box的宽度和main的宽,然后计算main容器一行能容纳多少个bo ...
- 7-----Scrapy框架中Download Middleware用法
这篇文章中写了常用的下载中间件的用法和例子.Downloader Middleware处理的过程主要在调度器发送 requests请求的时候以及网页将 response结果返回给 spiders的时候 ...
- 查看SQL SERVER Job details
SELECT [sJOB].[job_id] AS [JobID] , [sJOB].[name] AS [JobName] , [sDBP].[name] AS [JobOwner] , [sCAT ...
- JS数组去重总结
方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = th ...
- python 之serial
一 先按照 pywin32:pywin32是一个非常强大的Python扩展库,是Python调用Windows系统底层功能的最佳接口,不安装这个按照pyserial也没有用 二 按装pyserial ...
- leetcode 182. Duplicate Emails having的用法 SQL执行顺序
https://leetcode.com/problems/duplicate-emails/description/ 首先sql的执行顺序是 from-->where-->group b ...
- 性能测试工具Jmeter07-Jmeter性能测试实战
测试需求:测试20个用户访问www.baozhenart.com在负载达到30QPS时的平均响应时间 QPS:Query Per Second每秒查询率.是一台查询服务器每秒能够处理的查询次数.在因特 ...