网站建设

七牛&又拍云CDN云存储节省GET次数的小技巧

Jager · 1月22日 · 2015年 · 954次已读

相信大部分使用七牛的小站用的都是七牛的免费套餐。也就是有各种限制,比如流量、GET 数量等:七牛&又拍云CDN云存储节省GET次数的小技巧

对于这 4 个限制指标,估计大部分站长最拮据的就是第 2、4 个限制了。

不过,对于第 2 个限制,我们倒是可以通过推荐他人注册七牛来获得最高 40G 的永久下载流量(貌似有超过的)。比如,我的 2 个七牛帐号就都已经是永久 40G 流量了。

随着网站的流量越来越大,而且网站的所有静态资源都丢到了七牛,结果就出现这种情况:

七牛&又拍云CDN云存储节省GET次数的小技巧

一个月 300 多 W 次 GET 了。虽然七牛的 GET 非常便宜(¥0.01 /万次请求),一百万也就是 1 快钱。但是作为屌丝站长,本来就想用用免费的套餐,结果一个月也好几块,总是觉得别扭是不?

下面就分享 2 个节省 GET 次数的方法,GET 数目太大的朋友可以参考下。

一、调节缓存寿命

这是七牛新出的一个设置:maxAge

通过配置七牛的空间属性中 maxAge, 达到配置 HTTP header 中 Cache-Control:max-age 的目的。通俗来说就是控制缓存刷新的时间,那当然设置越长,越能节省 GET 抓取数目了:七牛&又拍云CDN云存储节省GET次数的小技巧想都不用想,设置为最长的2147483647 秒:

七牛&又拍云CDN云存储节省GET次数的小技巧

二、开启防盗链

这个是必须开启的,省的出现不但文章被人采集,而且资源都被人直接盗用的尴尬局面!直接开启白名单,将你手头的域名加入即可,避免出现大水冲了龙王庙的情况,并且把空 referer 给禁止下:

七牛&又拍云CDN云存储节省GET次数的小技巧

三、针对搜索引擎

这个方法比较新颖,应该是我最先想到的!

原理比较简单:在 dnspod 解析七牛静态域名(前提是已自定义了七牛静态域名,比如我的 static.zhang.ge)时,额外新增一条解析搜索引擎线路的 A 记录,指向我们的源服务器 IP,默认线路则 cname 到七牛的 CDN。这样一来,一大波搜索引擎的抓取就分配到了你的源服务器,而非七牛!当然也就起到了节省 GET 次数的效果了!

简单的说下步骤:

A. 对七牛自定义域名新增搜索引擎线路解析,指向源服务器:

七牛&又拍云CDN云存储节省GET次数的小技巧

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:

七牛&又拍云CDN云存储节省GET次数的小技巧

II. 图片可以正常访问:

七牛&又拍云CDN云存储节省GET次数的小技巧

III. 不一样的 robots:

七牛&又拍云CDN云存储节省GET次数的小技巧

如此一来,不但可以节约搜索引擎抓取的 GET 次数,还意外的做好了镜像站的 SEO 工作,因为非静态资源全部返回 404,就算你搜索引擎不遵守 robots 也没辙!让你瞎收录!

好了,本文就介绍到这,理论上来说同样适用于又拍云,感兴趣的童鞋可以去自行测试看看。看不懂文章的童鞋就别瞎评论了!做你该做的去吧!

七牛免费帐号注册==>传送门

四、终级大招

以下内容为 2015 年 3 月 4 号最新更新:

最近网站的流量砰的一下就上来了,一天 3000 多 IP,结果问题来了,七牛的免费套餐爆表了:

GET 次数每天 10W+:

七牛&又拍云CDN云存储节省GET次数的小技巧

下载流量每天 5、6GB:

七牛&又拍云CDN云存储节省GET次数的小技巧

很明显,这样下去免费套餐根本扛不住,迟早要爆表收费!

解决办法很简单,在七牛的基础上套一层百度云加速或 360CDN 好了。

我在百度云加速 3.0 的 DNS 解析如下所示:

七牛&又拍云CDN云存储节省GET次数的小技巧

其中大众线路解析到阿里云云盾的 WAF 地址,搜索引擎则解析到我网站的真实 IP,然后七牛的 cname 记录则套上百度云加速的缓存(图中的 static 记录),以此来解决七牛流量和 GET 爆表的问题!

实际上这样设置,七牛的加速也就没了意义,因为都缓存到了百度 CDN 节点了!这样做我主要是为了用到七牛的缩略图功能!!

这样设置还有一个好处,平常大众线路是直接回源,也就是指向云盾的 WAF 节点,因为就算不用百度的缓存,真实 IP 也不会被泄漏!一旦受到攻击,云盾也扛不住了,那么我们只要理解开启百度的缓存即可实现双重防护!

更新完毕,经供参考!

26 条回应
  1. 厦门微信营销 2015-1-23 · 15:07

    来支持博主!签到成功!签到时间:下午3:06:33,每日签到,生活更精彩哦~

  2. 同盟源 2015-1-23 · 19:50

    过来学习了

  3. 回梦無痕 2015-1-23 · 21:44

    貌似静态里少了个}了

  4. 回梦無痕 2015-1-23 · 21:47

    哦!好像不是少了。。反正我也看不懂。。我看是少了个},但是好像逻辑也不对!

  5. 回梦無痕 2015-1-23 · 22:26

    还有个问题,在文章列表,看到评论有4条。点进来,只有一条。未审核的也算进评论数吗?

  6. 回梦无痕 2015-2-3 · 16:16

    我在你的基础上修改的,搜索引擎爬图片js那些时候直接显示,爬文章首页时候不返回404,直接重定向到网站对应的文章去。但是我有个问题,做这个的目标是减少CDN的消耗,但是如果搜索引擎疯狂的爬CDN域名这样不就增加了网站服务器的负担了么?而启用CDN的初衷又是减少服务器的负担!

    • avatar
      Jager 2015-2-4 · 12:55

      CDN是针对用户的,又不是针对搜索引擎的。要担心压力问题,还不如直接不对搜索引擎开发,robots禁止抓取任何内容好了。

      • 回梦无痕 2015-2-4 · 13:27

        因为在搜索引擎爬CDN的时候都给回源到源网站了,那就等于原网站要承受来自本身域名和来自CDN域名的压力,这样我觉得还不如直接禁止搜索引擎爬CDN还比较好!

        • avatar
          Jager 2015-2-4 · 13:27

          那就禁止吧,没必要纠结。 来自CDN的说法就有问题了,自己分析下,本身CDN就是从原内容中剥离出去的一部分,CDN回原也只是把之前剥离的还回来了,不存在压力上的合并。

  7. aoweisi 2015-2-12 · 19:35

    签到成功!签到时间:下午7:30:44,每日签到,生活更精彩哦~

  8. 清知枫 2015-2-13 · 11:36

    签到成功!签到时间:上午11:33:59,每日签到,生活更精彩哦~

  9. bjs 2015-3-5 · 0:27

    你牛逼!!!

  10. 幻杀博客 2015-3-21 · 10:06

    一个月150G?!

    • avatar
      Jager 2015-3-21 · 10:09

      每天3W左右PV,图片和静态的消耗是惊人的,不过现在做了云加速缓存,每天就几百兆了。

  11. 壹纳网 2015-6-20 · 15:45

    七牛流量异常, 来学习下。。。

  12. 小众博客 2015-7-5 · 20:22

    好深奥,我没用静态存储,是全站静态文件镜像再套一层360云加速,这样就等于七牛没用了是吧。。。

    • avatar
      Jager 2015-7-5 · 20:24

      CDN缓存到节点后,访问不会请求七牛,确实是没用了。

  13. kuni 2015-7-20 · 23:45

    请问B. 在源服务器新增自定义域名的监听模块,这一步是编辑nginx.conf吗?谢谢

    • avatar
      Jager 2015-7-21 · 14:53

      是的

      • kuni 2015-7-24 · 22:23

        谢谢指导!

  14. kuni 2015-7-25 · 21:38

    是不是有了百度云加速,那么七牛云和又拍云之类的CDN都没用了(除了缩略图功能)?

  15. 且听风吟 2015-11-6 · 17:59

    每次来你这里都能学习到新东西!看来以后没事要多逛逛你的博客了!

  16. an2cn 2015-12-25 · 16:40

    想要开启全站HTTPS,只能采用七牛的https二级域名,没办法走CDN,不知道免费套餐会不会爆表 :sad: :evil: :evil:

  17. 七弦琴 2016-11-11 · 19:35

    免费套餐已经开始超了。毕竟我的站多图,但是我的get数基本只是千位数,但是下载流量却在一个g左右。好奇怪。。

  18. 禅猫 2017-1-14 · 22:09

    那你的七牛启用了Https 的 怎么收费?的