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

2018-07-13  本文已影响0人  谷子多

特性:

以下这些头只是限制性的,声明性的作用,没有强制约束力。只是为代理服务器设置了这些头,要求按照规范去做,但是完全可以不按照这个规范做。

可缓存性
到期

重新验证

其他


浏览器中用到的

可缓存性 :
到期

重新验证


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=20'
    })
    response.end('console.log("script loaded")')
  }
}).listen(8888)

问题 : 这时如果改变了服务器返回的结果,刷新,发现返回的还是之前的结果,并不是最新的。这是因为服务器端更新了之后,客户端还是请求的缓存的资源,这样想要更新一个应用的时候,客户端根本触及不到了,一般max-ag可能会设置一年。
解决:在构建流程的时候,把打包完成的JS文件名根据内容的hash结果,加上一串hash码,这串hash码是因为根据打包完成的js以及其他静态资源的文件内容进行性的hash计算,所以如果这些静态文件内容没有变,hash码就不变,反应到web页面上就是url没有变,那么就可以使用静态缓存;而如果你的内容有变,hash码就会变化,嵌入在html的url路径就有变化,有了变化之后发起的请求就是一个新的静态资源请求而不是之前缓存的请求。这样就可以达到缓存的目的。

上一篇 下一篇

猜你喜欢

热点阅读