这几天一直在折腾WordPress缓存的问题,目前代码狗已经能做到0查询,不过我却没有将0sql技术使用起来,可能有朋友会问为什么,我的回答是不实用。看水煮鱼的博客够快吧,页面生成时间都不到1ms算是快到闪电了。可是那又如何,以我的网络访问他的站也得耗费接近1秒钟。费尽心思到最后用户体验与那些只做了简单缓存的站没多大区别,还得放弃一些动态数据的效果,我实在是不需要这种0查询效果。再次劝各位一句,0sql是门技术,但是使用起来也得考虑自身情况适不适合这么技术,在满足你需求的情况下最大限度的降低数据库查询次数,才是我们学习0sql技术的最终目的!
说了这么多。有些扯远了,再说今天的主题,解决腾讯云cdn内容分发缓存导致网站首页不更新的解决办法,写这篇文章是因为我在折腾0sql的技术时被腾讯的cdn搞得头大。先说说我出现这个问题的情形,每次在更新文章后,在首页看不见新更新的文章,但是分类页下文章却是正常的。最开始我以为是我服务器缓存的问题,首先刷新memcached缓存数据,结果毫无作用,然后关掉memcached缓存服务,没有效果。然后关掉redis缓存服务(虽然我没启用),仍然没有效果,调整wp-config.php文件,关闭所有缓存,还是没效果。这时候我的心情是十分难受的,最后只能放大招——重启服务器,然而并没有什么卵用。重启后浏览器清空缓存Ctrl+F5强刷,还是没用。难道这个问题就没法解决了?这几天搞缓存搞得我头晕,冷静了一会儿后,我决定通过浏览器的响应头找出这个问题出现在哪儿!我的响应头如下:
可以看到响应地址是腾讯的CDN服务器,然后响应状态也正常。在响应头部header中我发现了几个特殊数据,服务器数据过期时间我设置的是1个小时。这里的数据记录时间居然是早上??看来出问题的不是我的服务器。接着看到有个server字段,看不懂百度了一下发现这是腾讯的cdn服务。突然想起了前几天从阿里云cdn换到了腾讯云CDN,很有可能配置上有点问题。然后看到有个缓存信息字段后面显示命中字样,我真是……有苦说不出。
解决办法
主要是cdn缓存策略问题,值得注意的是需要调整一下优先级,否则即使你设置了动态文件不缓存,首页也会给你缓存下来的。下图是我的优先级,切记一定要将动态文件的优先级设置为最高!
你以为排在第一优先级就最高了?想多了,腾讯就是不按套路来,排在最下面的优先级才最高!记住啦,排在最下面优先级最高!所以正确的设置应该是下面这样。
至于设置了动态文件不缓存,还要不要设置首页规则就看你自己了,我是设置了的反正设置上又不收费,无所谓咯。然后等待cdn部署,完成后的请求如下图:
我们可以看到X-Cache-Lookup字段出现了命中信息,查阅一番后知道这是腾讯cdn未命中的意思,更多命中信息如下:
- X-Cache-Lookup:Hit From MemCache 表示命中CDN节点的内存
- X-Cache-Lookup:Hit From Disktank 表示命中CDN节点的磁盘
- X-Cache-Lookup:Hit From Upstream 表示没有命中CDN
刷新下网站,首页内容也能随时更新显示出来了,memcached缓存启动起来,一切正常,到此问题圆满解决。
评论 (9)