博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CDN缓存不命中排查
阅读量:6704 次
发布时间:2019-06-25

本文共 1220 字,大约阅读时间需要 4 分钟。

场景:CDN的作用在于就近缓存,缓存命中情况下对应资源的访问速度会相对较快,加速效果较好;如果CDN缓存命中率差,对应的CDN加速效果是相对不理想的,故提升CDN缓存命中率对于CDN加速效果有着重大影响,本文旨在让读者可以根据案例定位对应资源为何缓存不命中,如何才能缓存命中提高缓存命中率。

案例一:源站设置了no cache,private

(1)Cache control设置nocache, private
1

c3a62358e767017d3d554908ee42abb32dfca9e4

解决:取消源站cache contorl:nocache 或者private的设置

(2) Pragma 设置 nocache, private,标注:Pragma行是为了兼容HTTP1.0,作用与Cache-Control是一样的

a2f2d57017a63c6a8abc84346a9d2773f65b882c

解决:取消源站的Pragma: no-cache设置

案例二:cdn设置对应规则缓存时间为0

6461875cca4ccf6e7e34f309e2aff7d88f02fc14

排查

1)源站未设置nocache private等;
2)源站存在Cache-Control缓存头
3)查CDN缓存规则配置:
3

问题定位:cdn配置了缓存时间为0

解决:取消该cdn缓存规则的配置

案例三:cdn 未设置缓存规则,并且源站也未抛出与缓存相关的头如cache control,Expires,(Last-Modified/If-Modified-Since, Etag/If-None-Match要配合Cache-Control使用)等

2

解决:cdn设置缓存规则;

建议: 建议设置目录缓存 / ,权重设置的低一点,来保证全站缓存
参考:https://help.aliyun.com/document_detail/27136.html?spm=5176.doc27140.6.139.ddB4Tw

案例四:源站设置:cache-control:max-age=0

5

解决:取消源站的max-age=0,cdn设置缓存规则;

建议: 建议设置目录缓存 / ,权重设置的低一点,来保证全站缓存
参考https://help.aliyun.com/document_detail/27136.html?spm=5176.doc27140.6.139.ddB4Tw

案例五:cdn配置缓存规则,源站未设置nocache,private;Vary: Accept-Encoding, Cookie导致缓存不能命中,注意:这边x-cache 是有对应时间的,但是每次访问还是miss的

4

排查

1)源站未设置nocache,private;
2)源站存在cache-control等头;
3)cdn未设置缓存规则:缓存时间为0;
4)cdn返回的response头包含了 X-Swift-CacheTime:7200
5)源站返回的vary头包含cookie每次刷新cookie的值都在变,所以cache命中不了
解决:取消源站的Vary: Accept-Encoding, Cookie

转载地址:http://irblo.baihongyu.com/

你可能感兴趣的文章
mysql简单优化思路
查看>>
tomcat并发优化之三种接收处理请求方式(BIO、NIO、APR)介绍
查看>>
将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1 RC 1
查看>>
Centos7搭建Confluence破解版
查看>>
归并排序的实现
查看>>
phpstorm更改sql文件匹配类型
查看>>
Nancy之结合tinyfox给我们的应用提供简单的数据服务
查看>>
多个Tomcat之间实现Session共享
查看>>
[日常] C语言中的字符数组和字符串
查看>>
Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置...
查看>>
from disk cache 与 from memory cache
查看>>
应用图片加载服务与第三方实现库的解耦
查看>>
高并发的核心技术-幂等的实现方案
查看>>
微波炉炖蛋
查看>>
C#调用C/C++ DLL 参数传递和回调函数的总结
查看>>
非spring组件servlet、filter、interceptor中注入spring bean
查看>>
SQL Server中SELECT会真的阻塞SELECT吗?
查看>>
v-for设置键值 key
查看>>
通过一次SpringBoot打成war包部署到tomcat启动总结一般jar包冲突的解决方法
查看>>
class path and classloader
查看>>