码迷,mamicode.com
首页 > 系统相关 > 详细

缓存头Cache-Control的含义和使用

时间:2020-02-20 11:44:32      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:files   cond   根据   响应时间   变化   console   格式转化   节点   load   

缓存Cache-Control的特性

  a.可缓存性

    public : http请求返回的过程中,返回的数据可以在路径中的每个节点被缓存

    private : 只有请求的浏览器才可以缓存请求到的数据

    no-cache:  可以使用缓存,但是使用之前必需先通过服务器验证一下,如果源服务器验证

         后说可以使用本地的缓存,才可以使用。否则,需要重新请求数据。

  b.到期

    max-age=<seconds>   缓存多长时间后到期,到期后浏览器就再次请求服务器里的数据。

    s-maxage=<seconds> 代理服务器可以识别这个选项,当同时设置了max-age和s-maxage

               代理服务器会优先识别s-maxage。

    max-stale=<seconds> 即便缓存过期了,只要在max-stale这个时间内,还是可以使用过期

               缓存。

  c.重新验证

    must-revalidate 如果缓存到期了,浏览器必需向源服务器发起验证,请求新的数据。

    proxy-revalidate 如果缓存到期了,代理服务器也需要向源服务器请求数据。

  d.其他

    no-store 永远都需要请服务器重新请求数据

    no-transform  主要是针对代理服务器,因为有些代理服务器可能比较有想法,认为源服务器

           返回的数据太大,会将数据压缩或者格式转化一下。这个配置就是告诉代理服

           器不要这么做。

----------------------------------------------------------------------

我们希望浏览器缓存数据缩短响应时间,但是当我们源服务器的数据更新后,如果浏览器还是使用缓存,就无法显示更新后的内容。

这怎么怎么办呢?前端解决方案是,在文件名前根据文件内容加上hash码,当文件内容发生变化后,hash码也会变化。

hash码变化后相当于文件的路径发生了变化,浏览器就会重新向服务器请求数据。

-----------------------------------------------------------------------
注意: 这些头只是一种申明,代理服务求,和浏览器遵守与否无法控制。

const http = require(‘http‘)
const fs = require(‘fs‘)

http.createServer(function (request, response) {
  console.log(‘request come‘, request.url)

  if (request.url === ‘/‘) {
    const html = fs.readFileSync(‘test.html‘, ‘utf8‘)
    response.writeHead(200, {
      ‘Content-Type‘: ‘text/html‘
    })
    response.end(html)
  }

  if (request.url === ‘/script.js‘) {
    response.writeHead(200, {
      ‘Content-Type‘: ‘text/javascript‘,
      ‘Cache-Control‘: ‘max-age=200‘
    })
    response.end(‘console.log("script loaded")‘)
  }
}).listen(8888)

console.log(‘server listening on 8888‘)

 

缓存头Cache-Control的含义和使用

标签:files   cond   根据   响应时间   变化   console   格式转化   节点   load   

原文地址:https://www.cnblogs.com/ladybug7/p/12334915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!