一个资源是如何缓存下来的?

2018-01-30  本文已影响0人  牛x的依然

一个资源是如何缓存下来的?

 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哪些资源需要重新拉取。

}

上一篇 下一篇

猜你喜欢

热点阅读