CDN缓存

CDN与HTTP缓存

学习自

https://blog.youkuaiyun.com/wangxin1982314/article/details/51050206(写的很好,更是一篇HTTP缓存的神文)


CDN

就是在服务端和客户端间又增加了一层CDN边缘节点(CDN相当于分销商)。


题外话

在浏览器中:

输入url或点击按钮跳转:会被强制缓存、对比缓存干预

F5或浏览器刷新按钮:只会被对比缓存干预

ctrl f5或ctrl 单击:不缓存


CDN缺点:

哪怕你ctrl f5了,如果CDN边缘节点上的数据没有及时和服务器同步,我们得到的也是过时数据,这很可怕


CDN缓存策略:

遵循HTTP缓存规范,也有自己更为精细的控制

### CDN 缓存的工作原理 CDN(Content Delivery Network)的核心目标是加速互联网内容分发,其主要手段之一就是利用缓存技术减少回源次数并提高用户体验。以下是关于CDN缓存工作原理的关键点: #### 1. 基本架构与组件 理论上,最简单的CDN网络由一个负责全局负载均衡的DNS和若干个节点组成,每个节点至少有一台Cache设备来存储静态资源[^3]。这些节点分布在全球各地,能够根据用户的地理位置提供最近的服务入口。 #### 2. 用户请求流程 当用户发起对某个资源的请求时,CDN会通过以下方式处理: - **域名解析**:全球负载均衡DNS基于用户的位置返回最优的CDN节点IP地址。 - **缓存命中判断**:如果该资源已存在于选定的CDN节点上,则直接从本地缓存中获取并返回给客户端;否则触发回源拉取逻辑。 #### 3. 缓存策略设置 合理的缓存配置对于提升性能至关重要。通常情况下可以调整以下几个方面参数来进行优化[^1]: - **TTL(Time To Live)**: 定义每种类型的文件应该被保存多久之后再重新加载自原始网站. - **目录级别规则**: 对不同路径下的对象应用特定的行为模式, 如图片可能适用较长有效期而HTML页面则较短. #### 4. 刷新机制 即使设置了合适的TTL值,在某些场景下仍需手动干预以同步最新版本的内容到所有边缘位置上去。这可以通过两种途径完成: - 使用厂商提供的管理界面提交清除指定URL列表的任务; - 调用开放出来的RESTful风格API接口自动化执行相同的操作过程[^1]. #### 5. 浏览器端交互细节 值得注意的是,除了上述提到过的服务器层面之外,终端也会参与到整个环节当中去。具体表现为每当尝试打开网页链接之前都会先查询内部是否有对应的副本存在,并依据相应头部字段决定采取何种行动路线图[^4]: ```python if is_cache_valid(): load_from_local() else: request_server_verification() ``` 以上便是围绕着主题展开的一系列阐述说明文档资料汇总整理而成的结果集锦展示效果呈现形式如下所示: ### 示例代码片段 - Python 实现简单HTTP GET 请求模拟浏览器行为 ```python import requests def fetch_resource(url): headers = {'If-None-Match': 'etag_value'} # 协商缓存头信息 response = requests.get(url, headers=headers) if response.status_code == 304: print("Using cached resource.") elif response.ok: save_to_cache(response.content) print("Fetched new resource and updated cache.") fetch_resource('http://example.com/resource') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值