一个资源是如何缓存下来的?
1.img标签 用户根据url去获取资源
{
这时是如何诱导到CDN上的呢?
我认为是DNS返回了CDN列表。让他去找CDN。然后CDN再根据客户端的IP分配给CDN节点。
其实是我们的域名的DNS会根据用户的ip直接分配CDN给他们。
}
2.CDN查询缓存,如果没有发现,就去管服务器要。
3.服务器找到资源,还给CDN,并且告诉他,永久缓存。
4.CDN再把信息和资源原原本本的告诉客户端。客户端也就把资源拿到并且永久缓存了。
我们的资源有两类。
static静态资源。
这类资源会在外面加上tag。这样,每次发布,就能强行让用户重新拉取。
api图片资源。
这类资源通过修改数据库的名称来达到同步更新的目的。如果需要更换资源,更换名字就可以了。
产品经理改需求怎么办?对应着这两类资源。
换个banner接口的资源图?改名字就行了。
换个static文件?这就麻烦点了。首先复习下static资源的发布流程
1)拿到static文件。
2)同步工程文件。
3)更新服务器static目录。
4)push代码开始编译发布。
5)重新打包的时候,会将static的资源也做处理,打上tag。文件中的资源就都被打上tag了。
6)之后用户接受到新的app.js文件(上了戳的),回去访问新的静态资源,重新拉取数据。
如果修改这类static图片。
直接更新了static文件夹。
刷新cdn。强迫缓存服务器重新拉去。
ok 所有的新用户就没问题了。它实际上就是,发布上线后,更新static文件夹,并且命令cdn忘记缓存过这个资源。
我们如何掌控缓存的?
规则1:永久缓存全部资源。
规则2:如果名称变了就拉取新资源。
一旦永久缓存,就不会再次请求资源。server只能通过刷新CDN来更改CDN的缓存,但是无法控制客户端清空缓存。
什么是刷新CDN?
刷新cdn就是清除掉cdn的缓存。其实刷新后面可以跟一个预热。
{
预热从技术实现上需要告知CDN哪些资源需要重新拉取。
}
网友评论