`

CDN缓存 2014-04-16

阅读更多

 

前端压力测试结果: 单屏请求 | 响应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或者其他网络缓存技术一定要弄清楚它的缓存策略,避免不需要缓存的资源被缓存。

分享到:
评论

相关推荐

    easy-cdn-1.0.5-linux.tar.gz

    CDN(Content Delivery Network)即内容分发网络,是一种分布式网络服务,旨在通过将静态内容(如图片、视频、JavaScript、CSS等)缓存到全球各地的边缘服务器上,来提高用户访问速度和降低服务器压力。在“easy-cdn...

    前端开源库-electrode-cdn-file-loader

    2. **减少主服务器负担**:CDN缓存了大量静态资源,减少了对源服务器的请求,减轻了服务器压力。 3. **更好的可用性**:如果主服务器出现故障,CDN还可以提供一定程度的容错能力,因为用户可以从其他CDN节点获取资源...

    aws CDN刷新缓存

    本脚本用于清除AWS上的CDN(即cloudfront)的缓存 使CDN缓存过期,重新回源拉去

    镜像CDN-Layer-master

    镜像CDN(Content Delivery Network)是一种分布式网络服务,它通过将网站内容缓存到全球各地的服务器上,以提高用户访问速度和降低源站压力。"Layer-master"项目可能是用于构建自定义CDN解决方案的一个开源框架或...

    webpack-cdn-plugin-master.rar

    CDN 是一种分布式网络服务,通过在网络的各个节点上部署服务器,缓存网站的静态资源,用户请求时,会从最近的节点获取资源,这样可以减少网络延迟,提高用户体验。在 Webpack 中使用 `webpack-cdn-plugin` 可以帮助...

    WordPress发布更新文章、提交审核评论自动清理腾讯云CDN缓存

    【WordPress发布更新文章、提交审核评论自动清理腾讯云CDN缓存】 在WordPress网站运营过程中,使用内容分发网络(CDN)可以显著提高网站的加载速度和用户体验,特别是当你的用户遍布各地时。腾讯云CDN提供了一个...

    Zblog 的CDNfly-CloudFlare全能CDN自动刷新缓存插件-自动清理-适配优化2.1.0版本

    Zblog 的CDNfly|CloudFlare全能CDN自动刷新缓存插件,包括其自动清理、适配优化和缓存配置,手动刷新,全站刷新,自动预热等功能。作者之前已写过Wordpress对接cdnfly的插件,而此次是应群友要求为Zblog打造相应插件

    「无线安全」针对互联网缓存和CDN的攻击 - 无线安全.zip

    【无线安全】针对互联网缓存和CDN的攻击 在当今的互联网环境中,无线安全是不可或缺的一部分,尤其是在处理大量数据传输、使用缓存服务和内容分发网络(CDN)时。这些技术虽然大大提高了网站的性能和用户体验,但也...

    Origin_CDN切换.zip

    CDN是通过在全球范围内部署多个服务器节点,将内容缓存到离用户最近的地方,从而减少数据传输的延迟和丢包,提高用户访问速度。Origin平台的CDN切换工具正是利用这一原理,允许用户选择更优的服务器节点,特别是对于...

    全自动刷新aws cdn 缓存目录

    文件过期前从 CloudFront 边缘缓存中删除文件 通过边缘缓存使文件失效。查看器下次请求文件时,CloudFront 将返回源以获取文件的最新版本。

    cdn、C2-Profile隐藏CS

    CDN(Content Delivery Network)是一种分布式网络架构,它通过位于全球不同地理位置的服务器节点,将静态内容(如图片、脚本、样式表等)缓存并分发给用户,以提供更快速和可靠的内容传输服务。 CDN的主要功能和...

    element-ui@2.15.9 cdn资源

    cdn资源指的是通过 Content Delivery Network(内容分发网络)来加载外部资源,这种方式可以提高网页的加载速度,因为 CDN 会将静态资源缓存到全球各地的服务器上,用户可以从最近的服务器获取数据。在本例中,`...

    互联网加速CDN原理-PPT

    - **基本原理**:CDN的基本思想是在用户和源服务器之间增加一个或多个缓存层。这些缓存层通常由分布在不同地理位置的节点服务器组成,这些节点能够存储网站的部分或全部内容。当用户请求访问某个网站时,CDN系统会...

    Taobao海量图片存储与CDN系统-v2-系统架构师

    - **架构优化**:通过引入多级缓存和CDN系统等手段,显著提高了用户体验。 - **节能减排**:积极探索低功耗服务器平台的应用,以实现可持续发展。 - **安全防护**:加强安全措施,确保用户数据的安全与隐私。 总之...

    使用CDN缓存后的网站的过程

    使用CDN缓存后的网站的过程

    Python-批量测试B站海外CDN节点延迟找出最低延迟的节点

    CDN是一种分布式网络服务,它将内容缓存到全球多个地理位置的边缘节点,使得用户可以从最近的服务器获取内容,从而减少延迟、提高速度。B站在海外部署了多个CDN节点,以服务不同地区的用户。 在Python开发中,我们...

    缓存工作原理(CDN).pdf

    CDN的核心优势在于其利用边缘服务器缓存内容,这些边缘服务器位于靠近最终用户的位置,即入网点(POP)。这种设计可以最大程度地降低延迟,提高内容的获取速度,从而为最终用户带来更好的性能和更佳的用户体验。 ...

    11.CDN缓存系统用户手册.doc

    **CDN缓存系统用户手册** CDN(Content Delivery Network)是一种分布式的网络服务,旨在通过将内容分发到全球各地的多个节点来提高网络性能和稳定性。互联港湾科技的CDN缓存系统是其自主研发的专业级产品,旨在...

    WebRTC-CDN-Edge-Nodejs

    边缘节点是CDN网络中最靠近用户的服务器,它们负责缓存内容并直接向用户提供服务。在WebRTC的上下文中,边缘节点可能承担媒体代理的角色,转发和处理来自不同源的媒体流。Node.js可以部署在这些边缘节点上,提供...

Global site tag (gtag.js) - Google Analytics