缓存工作示意图:

在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")')
}

最新文章

  1. C# 调用 Oracle
  2. [UCSD白板题] Binary Search
  3. 【Win10】UAP/UWP/通用 开发之 RelativePanel
  4. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
  5. python装饰器初探
  6. js判断一个对象是否包含属性的方式
  7. !! Scrum之 流程和术语
  8. C语言的预处理命令
  9. InsertSort 插入排序
  10. WEB服务器:Apache、Tomcat、JBoss、WebLogic、Websphere、IIS的区别与关系
  11. Windows服务器安装Memcache缓存服务及PHP扩展
  12. 初始Ajax
  13. javascript监听数组变化
  14. 使用自定义的Adapter来设置ListView的内容
  15. e822. 监听JScrollPane的滚动
  16. javascript中字符串常用操作总结
  17. LeetCode题解:(114) Flatten Binary Tree to Linked List
  18. Python全栈开发之16、jquery
  19. 程序包需要 NuGet 客户端版本“2.12”或更高版本,但当前的 NuGet 版本为“2.8.50313.46”
  20. 马普尔小姐探案集S02E03【熙阳岭的疑云】

热门文章

  1. FineUIPro/Mvc/Core v6.1.0 发布了!
  2. JSON解析及数据库操作实战篇
  3. GIT如何根据历史记录回退代码
  4. httpclient发送请求的几种方式
  5. Visual Studio 2015创建ASP.NET MVC流程
  6. AcWing 8.二维费用的背包问题
  7. mysql 实践(例题)
  8. IDEAVIM 常用快捷键总结和使用说明
  9. select poll和 epoll
  10. Nginx可以做什么