项目--静态资源cdn的引入
DNS用CNAME解析到源站
回源缓存的设置
强推失效
cdn理解
http 的cache control响应头
private:客户端可以缓存
public:客户端和代理服务器都可以缓存
max-age=xxx:缓存的内容将在xxx秒后失效
no-cache:强制向服务端再验证一次
no-store:不缓存请求的任何返回内容
有效性判断
ETag: 资源唯一标识 返回304 not modify
If-None-Match:客户端发送的匹配Etag标识符
Last-modified:资源最后被修改的时间
If-Modified-Since:客户端发送的匹配资源最后修改时间的标识符
协商机制,比较Last-modified和ETag到服务端,若服务端判断没变化则304不返回数据,否则200返回数据
浏览器的三种刷新方式
回车刷新或a链接:看cache-control对应的max-age是否仍然有效,有效则直接fromcache,若cache-control中为no-cache,则进入缓存协商逻辑
F5刷新或command+R刷新:去掉cache-control中的max-age或直接设置max-age为0,然后进入缓存协商逻辑
ctrl+F5或commond+shift+R刷新:去掉cache-control和协商头,强制刷新
CDN自定义缓存策略
可自定义目录过期时间
可自定义后缀名过期时间
可自定义对应权重
可通过界面或api强制cdn对应目录刷新(非保成功)
静态资源部署策略(1)
1、css,js,img等元素使用带版本号部署,例如a.js?v=1.0不便利,且维护困难
2、css,js,img等元素使用带摘要部署,例如a.js?v=45edw存在先部署html还是先部署资源的覆盖问题
3、(√√√√√√√)css,js,img等元素使用摘要做文件名部署,例如45edw.js,新老版本并存且可回滚,资源部署完后再部署html
静态资源部署策略(2)
对应静态资源保持生命周期内不会变,max-age可设置的很长,无视失效更新周期
html文件设置no-cache或较短max age,以便于更新
html文件仍然设置较长的max age,依靠动态的获取版本号请求发送到后端,异步下载最新的版本号的html后展示渲染在前端
动态请求也可以静态化成json资源推送到cdn上
依靠异步请求获取后端节点对应资源状态做紧急下架处理
可通过跑批紧急推送cdn内容以使其下架等操作