前端压力测试结果: 单屏请求 | 响应4S | 日均PV-5W
结果不能满足电商网站要求,分析确定服务器带宽是瓶颈(服务器带宽仅10M)。
为了解决问题,公司决定购买CDN服务(Content Delivery Network,即内容分发网络 - 建立在互联网基础之上的缓存服务节点)。
我们的初衷是将网站静态资源(如:JS,CSS,IMG)缓存到CDN服务节点,CDN节点直接返回静态资源,从而缓解服务器带宽压力同时提高响应速度,从而提升用户体验。
CDN服务加上了,但结果似乎并不像我们想要的这么简单:
生产环境验证发现用户A登录后看到的是其他用户的登录信息,这可不是小问题,严重生产故障!
预发布环境的web容器和数据库环境都是一样的,预发布验证并未暴露上述问题,排除session缓存,redis缓存等原因,问题自然锁定到CDN缓存上。
运维同事给出建议:在每个请求后加动态参数,这样可以避免CND对动态请求(action请求)进行缓存。
目的可以达到,但工作量太大,涉及链接太多,很可能出现遗漏,而且极不易于维护。
当时本人提出问题:缓存是否可以区分请求后缀,有所缓存有所不缓存。运维同事表示CDN的缓存策略没有配置权限。
如果不能配置,难道所有使用CDN的站点都会存在同样问题?(51cdn)
这似乎不太可能。
查询CDN缓存策略发现CDN对资源的缓存确实是有区分的,缓存只针对静态文件如.js .css .image .html等。对于.do .action等动态请求是不会缓存的。
到了这里,几乎可以确定我们的动态请求被当成静态请求缓存起来了。
这并不奇怪,因为我们action请求的后缀全是.htm。
要知道htm和html是等同看待的,.htm结尾的请求被CDN当成html缓存起来,再次请求是同一路径时
请求直接命中CDN缓存,并未经过我们的Tomcat实例,所以才出现这次故障。
问题根蒂找出来了,要解决很简单,将后缀改成.do或.action或者其他动态请求后缀。
总结: 使用CDN或者其他网络缓存技术一定要弄清楚它的缓存策略,避免不需要缓存的资源被缓存。
相关推荐
「无线安全」针对互联网缓存和CDN的攻击 - 无线安全 数据泄露 WEB应用防火墙 业务安全 系统安全 Linux
本脚本用于清除AWS上的CDN(即cloudfront)的缓存 使CDN缓存过期,重新回源拉去
文件过期前从 CloudFront 边缘缓存中删除文件 通过边缘缓存使文件失效。查看器下次请求文件时,CloudFront 将返回源以获取文件的最新版本。
CDN(Content Delivery Network)是一种分布式网络架构,它通过位于全球不同地理位置的服务器节点,将静态内容(如图片、脚本、样式表等)缓存并分发给用户,以提供更快速和可靠的内容传输服务。 CDN的主要功能和...
13CDN缓存系统试运行方案2014.pdf
WordPress发布更新文章、提交审核评论自动清理腾讯云CDN缓存
使用CDN缓存后的网站的过程
清除-cdn 从多个 CDN 中清除缓存对象的工具安装go get github.com/oremj/purge-cdn用法清除边角料EDGECAST_TOKEN= " your-token "EDGECAST_ACCOUNT_ID= " account-id "purge-cdn edgecast --url ...
自动优选B站海外CDN(upos-hz-mirrorakam.akamaized.net)节点,自动选择最低延迟的节点。 支持自动更新最新的可用节点。 安装 安装环境 下载项目并安装依赖 克隆或下载此项目,在项目目录执行 npm install 配置文件...
浏览器模块缓存使用缓存 browserify-cdn 模块npm install browser-module-cache用法 var createCache = require ( 'browser-module-cache' )初始化创建缓存(选项) var cache = createCache ( { name : 'browser-...
11.CDN缓存系统用户手册.doc
行业分类-设备装置-CDN-P2P中内容属性可区分的流媒体缓存替换方法.zip
今天发现线上有个问题,线上一个图片域名,在前端已经加了CDN缓存,不落缓存,则用PHP动态实现图片缩放,但经PHP处理过的图片输出后,每次都要从后端读取,后端服务器压力瞬间增加,经分析,PHP中没有作304的处理, ...
PHP禁止缓存如何禁止页面缓存,?php //设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。 header("Expires: Mon, 26 Jul 1970 05:00:00 GMT"); //设置此页面的最后更新日期(用...
平台化CDN基础架构——ATS缓存系统
鸵鸟服务器 CDN缓存服务器 等待启动。
2018ISC大会干货 段海新教授 针对互联网缓存和CDN的攻击
CDNSoft推出的CDN服务器节点搭建软件是一套基于Delphi开发的CDN服务器配置软件,高效,稳定,安全! CDN配置软件可帮助大中小站长或大中小企业低成本,轻松构建自己的CDN网络或服务器群,提供专业的CDN软件,更好的CDN技术...
CDN 文件的缓存 例子 package main import ( "fmt" "gopkg.in/go-on/cdncache.v1" "net/http" ) // mounts the cached files at /cdn-cache/ var cdn1 = cdncache . CDN ( "/cdn-cache/" ) // does no caching ...