相信大部分使用七牛的小站用的都是七牛的免费套餐。也就是有各种限制,比如流量、GET 数量等:
对于这 4 个限制指标,估计大部分站长最拮据的就是第 2、4 个限制了。
不过,对于第 2 个限制,我们倒是可以通过推荐他人注册七牛来获得最高 40G 的永久下载流量(貌似有超过的)。比如,我的 2 个七牛帐号就都已经是永久 40G 流量了。
随着网站的流量越来越大,而且网站的所有静态资源都丢到了七牛,结果就出现这种情况:
一个月 300 多 W 次 GET 了。虽然七牛的 GET 非常便宜(¥0.01 /万次请求),一百万也就是 1 快钱。但是作为屌丝站长,本来就想用用免费的套餐,结果一个月也好几块,总是觉得别扭是不?
下面就分享 2 个节省 GET 次数的方法,GET 数目太大的朋友可以参考下。
一、调节缓存寿命
这是七牛新出的一个设置:maxAge
通过配置七牛的空间属性中 maxAge, 达到配置 HTTP header 中 Cache-Control:max-age 的目的。通俗来说就是控制缓存刷新的时间,那当然设置越长,越能节省 GET 抓取数目了:想都不用想,设置为最长的2147483647 秒:
二、开启防盗链
这个是必须开启的,省的出现不但文章被人采集,而且资源都被人直接盗用的尴尬局面!直接开启白名单,将你手头的域名加入即可,避免出现大水冲了龙王庙的情况,并且把空 referer 给禁止下:
三、针对搜索引擎
这个方法比较新颖,应该是我最先想到的!
原理比较简单:在 dnspod 解析七牛静态域名(前提是已自定义了七牛静态域名,比如我的 static.zhang.ge)时,额外新增一条解析搜索引擎线路的 A 记录,指向我们的源服务器 IP,默认线路则 cname 到七牛的 CDN。这样一来,一大波搜索引擎的抓取就分配到了你的源服务器,而非七牛!当然也就起到了节省 GET 次数的效果了!
简单的说下步骤:
A. 对七牛自定义域名新增搜索引擎线路解析,指向源服务器:
B. 在源服务器新增自定义域名的监听模块,以 Nginx 为例,如下所示:
server { server_name static.zhang.ge; index 404.html index.php index.html; root /home/web/zhang.ge; #和 zhang.ge 文件路径保持一致 location ~ /.*\.(php|php5)?$ { deny all; } location / { if (-f $request_filename) { #如果存在请求文件则直接展示; break; } return 404; #其他则返回 404,避免搜索引擎收录重复内容。 } location ~ (robots.txt) { #针对这个静态域名额外写一个 robots.txt rewrite /robots.txt /static_robots.txt last; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ { expires 30d; } }
C. 最后在网站根目录新增 static_robots.txt 文件,内容如下:
# 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: /
全部完成后,你可以在本地 hosts 将七牛自定义静态域名的解析指向你的源服务器 IP,模拟搜索引擎抓取,验证本次设置效果。
I. 首页、分类及文章均为 404:
II. 图片可以正常访问:
III. 不一样的 robots:
如此一来,不但可以节约搜索引擎抓取的 GET 次数,还意外的做好了镜像站的 SEO 工作,因为非静态资源全部返回 404,就算你搜索引擎不遵守 robots 也没辙!让你瞎收录!
好了,本文就介绍到这,理论上来说同样适用于又拍云,感兴趣的童鞋可以去自行测试看看。看不懂文章的童鞋就别瞎评论了!做你该做的去吧!
七牛免费帐号注册==>传送门
四、终级大招
以下内容为 2015 年 3 月 4 号最新更新:
最近网站的流量砰的一下就上来了,一天 3000 多 IP,结果问题来了,七牛的免费套餐爆表了:
GET 次数每天 10W+:
下载流量每天 5、6GB:
很明显,这样下去免费套餐根本扛不住,迟早要爆表收费!
解决办法很简单,在七牛的基础上套一层百度云加速或 360CDN 好了。
我在百度云加速 3.0 的 DNS 解析如下所示:
其中大众线路解析到阿里云云盾的 WAF 地址,搜索引擎则解析到我网站的真实 IP,然后七牛的 cname 记录则套上百度云加速的缓存(图中的 static 记录),以此来解决七牛流量和 GET 爆表的问题!
实际上这样设置,七牛的加速也就没了意义,因为都缓存到了百度 CDN 节点了!这样做我主要是为了用到七牛的缩略图功能!!
这样设置还有一个好处,平常大众线路是直接回源,也就是指向云盾的 WAF 节点,因为就算不用百度的缓存,真实 IP 也不会被泄漏!一旦受到攻击,云盾也扛不住了,那么我们只要理解开启百度的缓存即可实现双重防护!
更新完毕,经供参考!
来支持博主!签到成功!签到时间:下午3:06:33,每日签到,生活更精彩哦~
过来学习了
貌似静态里少了个}了
哦!好像不是少了。。反正我也看不懂。。我看是少了个},但是好像逻辑也不对!
还有个问题,在文章列表,看到评论有4条。点进来,只有一条。未审核的也算进评论数吗?
我在你的基础上修改的,搜索引擎爬图片js那些时候直接显示,爬文章首页时候不返回404,直接重定向到网站对应的文章去。但是我有个问题,做这个的目标是减少CDN的消耗,但是如果搜索引擎疯狂的爬CDN域名这样不就增加了网站服务器的负担了么?而启用CDN的初衷又是减少服务器的负担!
CDN是针对用户的,又不是针对搜索引擎的。要担心压力问题,还不如直接不对搜索引擎开发,robots禁止抓取任何内容好了。
因为在搜索引擎爬CDN的时候都给回源到源网站了,那就等于原网站要承受来自本身域名和来自CDN域名的压力,这样我觉得还不如直接禁止搜索引擎爬CDN还比较好!
那就禁止吧,没必要纠结。 来自CDN的说法就有问题了,自己分析下,本身CDN就是从原内容中剥离出去的一部分,CDN回原也只是把之前剥离的还回来了,不存在压力上的合并。
签到成功!签到时间:下午7:30:44,每日签到,生活更精彩哦~
签到成功!签到时间:上午11:33:59,每日签到,生活更精彩哦~
你牛逼!!!
一个月150G?!
每天3W左右PV,图片和静态的消耗是惊人的,不过现在做了云加速缓存,每天就几百兆了。
他们不计流量 :grin:
七牛流量异常, 来学习下。。。
好深奥,我没用静态存储,是全站静态文件镜像再套一层360云加速,这样就等于七牛没用了是吧。。。
CDN缓存到节点后,访问不会请求七牛,确实是没用了。
请问B. 在源服务器新增自定义域名的监听模块,这一步是编辑nginx.conf吗?谢谢
是的
谢谢指导!
是不是有了百度云加速,那么七牛云和又拍云之类的CDN都没用了(除了缩略图功能)?
每次来你这里都能学习到新东西!看来以后没事要多逛逛你的博客了!
想要开启全站HTTPS,只能采用七牛的https二级域名,没办法走CDN,不知道免费套餐会不会爆表 :sad: :evil: :evil:
免费套餐已经开始超了。毕竟我的站多图,但是我的get数基本只是千位数,但是下载流量却在一个g左右。好奇怪。。
那你的七牛启用了Https 的 怎么收费?的