最近因为稳定性考虑,我的 2 个网站都脱离了 360 网站卫士的阵营,准备单飞。昨天在模拟 CC 攻击自己网站的时候,发现十来个并发就扛不住了!
分析了一下原因,在没开启 360CDN 缓存的情况下,10 个并发攻击,硬件配置肯定是没问题的,那么无法访问的原因很明显就是带宽不够!
现在我的服务器带宽已经升级到了 2M,也就是峰值 250kb/s 的样子。试想一下,打开一个页面打开需要 100kb 的速度才感觉顺畅,如果 10 个并发,那么每个页面只能分到 25kb/s,肯定非常卡!产生 10 个并发时,2M 带宽会被占满,其他客户端根本无法访问,跟挂了没啥区别!
既然不用 360CDN 了,那么要改善这种带宽不够的情况就得请大名鼎鼎的七牛云存储出马了!
在 wp-super-cache 插件的 CDN 设置中填写七牛空间地址,重新启用了这个好久没用过的免费 CDN 加速(话说我一直把七牛当远程备份用,不知道七牛的产品经理知道了会不会跳出来打我。。。)
启用七牛之后,发现了 2 个问题:
①、WordPress 的 Ajax 评论无法使用了;
②、纠结存在七牛的静态图片是否要禁用搜索引擎的抓取和收录。
对于问题①:
很好解决,如下修改 comments-ajax.js 即可:
var i = 0, got = -1, len = document.getElementsByTagName(‘script’).length;
while ( i <= len && got == -1){
var js_url = document.getElementsByTagName(‘script’)[i].src,
got = js_url.indexOf(‘comments-ajax.js’); i++ ;
}
#新增如下行,前面是七牛空间地址,后面是博客地址
js_url = js_url.replace(‘static.zhang.ge’,’zhang.ge’);
对于问题②:
这有是一个老生常谈的问题,但是每次都会比较纠结!但比较肯定的是,对于七牛这种类似镜像站的域名,还是禁止抓取比较好!否则就会导致收录重复。
张戈博客备案之后,就将 static.zhang.ge 这个域名 cname 到了七牛的空间域名,所以网站的静态文件也就可以用这个二级域名来存放。
七牛的空间,创建时默认会有一个 robots,禁止所有搜索引擎抓取,内容如下:
User-agent: Baiduspider Disallow: / User-agent: Sosospider Disallow: / User-agent: sogou spider Disallow: / User-agent: YodaoBot Disallow: / User-agent: Googlebot Disallow: / User-agent: Bingbot Disallow: / User-agent: Slurp Disallow: / User-agent: MSNBot Disallow: / User-agent: googlebot-image Disallow: / User-agent: googlebot-mobile Disallow: / User-agent: yahoo-blogs/v3.9 Disallow: / User-agent: psbot Disallow: / User-agent: * Disallow: /
直接使用这个 robots,对 SEO 肯定是没问题的,避免了搜索引擎抓取到重复的内容。但是,有个小缺憾,使用这个 robots 之后,以前百度和 360 搜索结果中的缩略图都会被 K 掉。因为你的图片被禁止抓取了!!!
个人觉得搜索结果中有特色图片还是不错的,也许会吸引用户点击!
所以,我对放置在七牛空间的 robots 如下改造(推荐使用):
# robots.txt for statice domain User-agent: Baiduspider Allow: /wp-content/uploads/*.jpg$ Allow: /wp-content/uploads/*.png$ Disallow: / User-agent: 360Spider Allow: /wp-content/uploads/*.jpg$ Allow: /wp-content/uploads/*.png$ Disallow: / User-agent: Baiduspider-image Allow: /wp-content/uploads/*.jpg$ Allow: /wp-content/uploads/*.png$ Disallow: / User-agent: 360Spider-Image Allow: /wp-content/uploads/*.jpg$ Allow: /wp-content/uploads/*.png$ Disallow: / User-agent: * Disallow: /
意思很简单,就是允许百度和 360 抓取文章中的图片,其他搜索引擎一律禁止抓取!
这样做的好处是:
①、在避免搜索引擎收录七牛重复内容的同时,允许其收录文章的特色图片和内容配图;
②、禁止抓取可以极大的节省七牛空间的 GET 次数,因为搜索引擎的每一次抓取都将产生一次 GET,而七牛免费空间的 GET 次数是有限制的,我们完全没必要白白浪费。
用百度 robots 工具检测下:
没啥问题,直接上传到七牛空间,访问http://static.zhang.ge/robots.txt 即可看到效果。
今天,在群里谈论到这个问题的时候,龙三兄弟居然说可以在主域名写 robots 去禁用二级域名的抓取,着实震惊到我了,谁说可以这样写的?
好了,robots 的具体规则本文就不罗嗦了,只提 2 点:
最新补充:第①条说法已被推翻,关于 robots 优先级,请看最新文章:https://zhang.ge/4781.html
①、在 robots.txt 文件中,前面规则的优先级要高于后面的规则,而且至少要有一条 Disallow 记录,否则就没有起到禁止抓取的作用了,比如
User-agent: *
Allow: /wp-content/uploads
Disallow: /wp-content/
这种写法将允许抓取/wp-content/uploads 目录,而不允许抓取/wp-content/目录。
若反过来写:
User-agent: *
Disallow: /wp-content/
Allow: /wp-content/uploads
这种写法就是错误的,后面一条的 Allow 将不能生效,因为前面的规则优先级要高些,这么说应该懂了吧?
②、路径【不加斜杠】的规则比【加斜杠】的规则能匹配的范围更大,举例:
User-agent: *
Disallow: /bbs/
这种写法,确实是禁止了二级目录 bbs,但是却没有禁止 /bbs,即未禁止这个二级目录的默认页(比如:WordPress 默认的页面地址就是不带斜杠的),如果你想禁止目录下的所有内容,就不要带斜杠:
User-agent: *
Disallow: /bbs
对于第②条说法,可以查看百度官方 robots 的格式说明中的关于 Disallow 的说明(原文地址):
Disallow:
该项的值用于描述不希望被访问的一组 URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以 Disallow 项的值开头的 URL 不会被 robot 访问。
例如 “Disallow:/help” 禁止 robot 访问 /help.html、/helpabc.html、/help /index.html,而”Disallow:/help/” 则允许 robot 访问/help.html、/helpabc.html,不能访问 /help/index.html。”Disallow:”说明允许 robot 访问该网站的所有 url,在”/robots.txt”文件中,至少要有一 条 Disallow 记录。如果”/robots.txt”不存在或者为空文件,则对于所有的搜索引擎 robot,该网站都是开放的。
继续回到带宽瓶颈这个话题,了解网页结构的都知道,占据页面体积的主要是静态文件,比如 JS、CSS 和图片等。其他字符文字都非常小!
那么,在带宽不足又没开启 360 一类的 CDN 加速的时候,利用七牛云存储给网站做简单的动态分离处理的效果是非常不错的!因为最占带宽的静态文件已经交给七牛去处理了,你网站也就输出一些文字字符啥的,就极大的缓解了服务器网络小水管的尴尬!
所以,七牛云存储的主要功能就是分担来自带宽的压力,而不是其他!当网站服务器带宽不够用,又不想用啥云加速或网站卫士的时候,你就可以速度去启用七牛云存储了!
好了,关于七牛云存储和 robots 设置就说这么多了,发现没用 360CDN,现在的速度也是杠杠的!