关于CDN缓存问题

问题场景:

顾客反馈,用户登录返回的不是当前用户信息,用户的菜单也不一样。

问题原因:

申请域名时,申请了CDN,用户请求时,没有回源站获取内容。

解决方案:

1.修改CDN策略,改为A标记。临时解决问题。

2.代码反馈头信息增加cache-control参数,no-cache。

3.在nginx服务器,给nginx请求反馈头文件增加cache-control配置。

关于cache-control 参数说明:

(1)、打开新窗口

值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。

而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:

Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)

(2)、在地址栏回车

值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。

值为no-cache,那么每次都会访问。

值为max-age,则在过期之前不会重复访问。

(3)、按后退按扭

值为private、must-revalidate、max-age,则不会重访问,

值为no-cache,则每次都重复访问

(4)、按刷新按扭

无论为何值,都会重复访问

Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。

  另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT

比如:禁止页面在IE中缓存

### 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') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值