项目--静态资源cdn的引入

项目--静态资源cdn的引入

DNS用CNAME解析到源站

回源缓存的设置

强推失效

项目--静态资源cdn的引入

 

 cdn理解


http 的cache control响应头

private:客户端可以缓存

public:客户端和代理服务器都可以缓存

max-age=xxx:缓存的内容将在xxx秒后失效

no-cache:强制向服务端再验证一次

no-store:不缓存请求的任何返回内容
项目--静态资源cdn的引入

项目--静态资源cdn的引入

 有效性判断

ETag: 资源唯一标识       返回304 not modify

If-None-Match:客户端发送的匹配Etag标识符

Last-modified:资源最后被修改的时间

If-Modified-Since:客户端发送的匹配资源最后修改时间的标识符

 

协商机制,比较Last-modified和ETag到服务端,若服务端判断没变化则304不返回数据,否则200返回数据


项目--静态资源cdn的引入


 浏览器的三种刷新方式

回车刷新或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对应目录刷新(非保成功)
项目--静态资源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内容以使其下架等操作