虽然网上关于使用七牛做加速的教程已经烂大街,但还是想写一篇关于这个的折腾记录。一方面原因是常规的设置并非本文的主题,另一方面是七牛的界面已经改版,与原来的差异还是比较大的,我还为了找到某些设置所在的地方发了工单。

### 常见问题

1. 空间应该设置为公有还是私有?

其实公有和私有的区别主要在于能不能在没登录的状态(网站访问者就处于这种状态)下直接通过文件对象的URL访问。私有空间的内容没登录的情况下必须证明(通过密钥)你是这个空间的主人才可访问。所以说,想要让来访的人访问到你在七牛存储的内容,就必须设置为公有。比如存储镜像、图片、css、html等内容的bucket就应该设置为公有。而网站备份则应该设置为私有(网上关于用七牛为网站自动备份的文章大多都失效了或者使用的工具过时了,下篇文章或许就介绍这个)。
2. 我想使用七牛云做全站加速,要怎么设置?

关于这个,我当初也想搞,然而大家应该看看百度七牛的结果是什么:七牛云存储。七牛是做存储的,只是存储的东西做了CDN加速。如果想全站加速,大家可以考录veryCloud(每个月免费50g、支持https)、360网站管家、百度云加速之类的。为什么不推荐大家用七牛做全站加速呢?因为实现起来真的令人头大。(如果是纯静态站倒是挺容易的)在此之前先说一下,网上的教程全是局部加速的,比如使用七牛做镜像的时候,只有你设置的文件夹的内容被存放到了bucket中。更直接的证据是,使用奇云测、站长工具测速的过程你会发现访问到的IP就是源站的IP。可能你会想,我直接设置加速域名未网站域名不行吗,静态网站勉强可以(如果七牛镜像可以根据源站文件是否变更来更新文件的话就完全没问题,否则只能在文件改动后自己去七牛那把对应的文件删除),而动态网站就悲剧了,后台页面也给你缓存了,后台直接进不去。解决办法是在nginx中对动态文件请求者做判断,如果是七牛则拒绝访问,但是我们并不知道七牛的刷新缓存机制,每次做文件修改都要去七牛镜像空间那删除对应文件,想想都烦好么,如果把空间文件全删的话,没变的文件又得让七牛再下一遍,太浪费流量。所以用七牛还是做做局部加速好了。

### 使用七牛作为图床

方法很简单:创建一个公有空间,然后上传图片,使用图片的时候复制外链到img标签src的地方即可。

这里提醒大家的是记得设置域名防盗链,以防图片被别的网站复制外链到img标签src,然后某天你的七牛流量就炸了。这里吐槽一下,难道防盗链不是应该在空间设置里面吗
疑问
疑问
,然后找了一阵子,只好发个工单问问。神他妈最后发现是在融合CDN域名那设置。这里顺便说下,自定义加速域名还是比较有意义的,一方面七牛限制了默认域名的加速效果,另一方面是自己输入方便,不过要冲10块是个槽点。然后点开要设置防盗链的域名后基本上按这样设置就可以了:

你的域名
.你的域名
比如我的是:
sandogeek.com
.sandogeek.com
</pre> 然后开不开空 Referer则是看你有没有通过直接贴外链在浏览器地址栏访问七牛内的文件的需求,没有就开起来,开了之后在浏览器贴外链就没法访问到对应的内容了。 使用七牛云作为图床有几点好玩之处(优势):图片自动加水印、自动生成缩略图、还可以调整图片的质量、大小、对图像剪切甚至可以用来把多张图拼成一张等等,功能繁多,具体可以看七牛文档图片处理方面的API,而这一切只需要在图片后面加一些参数即可。更关键的是,你存放在七牛里的图片其实没有发生任何更改,只不过浏览者看到的是处理过后的图片。自动生成缩略图没啥好说的用了水煮鱼的插件就能轻松找到设置的地方(实现的原理就是在img标签src的链接后面加参数)。接下里想说下图片加水印,因为这个加水印很有意思,对其它的功能感兴趣的可以在七牛的文档里面查那些参数的意义。 #### 使用七牛API为图片自动加水印 操作流程并不困难:上传你的水印图片-&gt;复制外链-&gt;更多操作-&gt;图片样式-&gt;新建图片样式,然后按其中的提示操作即可。这里需要注意的是水印图片不要太大,如果水印高度比图片大则会导致加水印却看不到效果。如果有需要可以传一大一小两张水印图。 <fieldset> <legend>使用方法</legend> <pre>要加水印的图片的外链+样式连接符(可以修改,默认是-)+使用的样式名称
例如:
http://img.sandogeek.com/vps.jpg-wms0
</pre> </fieldset> 以为事情就这么简单?那么你可以试试访问没有加参数的图片外链,是不是就得到了没有加水印的图。
mdzz](http://emoj.sandogeek.com/mdzz.jpg),那加水印不就没卵用了。解决办法是开启原图保护:这次是在空间那边设置了。。。,点击更多操作->空间设置->开启原图保护。这样你想用这个空间的图就必须每张图后面都加上`样式连接符(可以修改,默认是-)+使用的样式名称`,否则就会访问失败,从而保护了原图。但是。。。有时候图是网上找的,不想加水印咋办。。。解决办法很简单,再开一个不开原图保护的bucket即可,不是自己的图就传到这个bucket里面。这里不得不再次吐槽七牛 ![mdzz
mdzz](http://emoj.sandogeek.com/mdzz.jpg),那加水印不就没卵用了。解决办法是开启原图保护:这次是在空间那边设置了。。。,点击更多操作->空间设置->开启原图保护。这样你想用这个空间的图就必须每张图后面都加上`样式连接符(可以修改,默认是-)+使用的样式名称`,否则就会访问失败,从而保护了原图。但是。。。有时候图是网上找的,不想加水印咋办。。。解决办法很简单,再开一个不开原图保护的bucket即可,不是自己的图就传到这个bucket里面。这里不得不再次吐槽七牛 ![mdzz
,好不容易总算保护了原图,当我想用某张图片的时候: ![复制外链呢](http://np.sandogeek.com/wailianne.png) 卧槽,复制外链怎么没了,赶紧发了工单,然后客服说开了原图保护就是这样的
震惊](http://emoj.sandogeek.com/zhenjing.gif)。然后我就想那中文名称图片的外链怎么办,那些中文对应的外链参数都什么鬼,顺手问了客服,客服说:找网上的工具例如urlencode之类的编码一下就可以了![震惊
震惊](http://emoj.sandogeek.com/zhenjing.gif)。然后我就想那中文名称图片的外链怎么办,那些中文对应的外链参数都什么鬼,顺手问了客服,客服说:找网上的工具例如urlencode之类的编码一下就可以了![震惊
卧槽,这么麻烦!于是只好暂时不再上传名称包含中文的图片。 但是有时候我想调整水印的位置怎么办呢? 其实并没什么好办法,创建9个不同位置的样式名即可。但是像原来那样操作就比较麻烦了,这里给个方便点的办法。大家可以看下刚才创建的样式是怎么样的。 ![样式格式](http://img.sandogeek.com/yangshigeshi.png-wks0) 我选中的部分代表了作为水印的图片,而
SonthEast就是位置啦(/ws/0.4是用来做自适应的),所以我们只要改一下位置就可以了。这里给出所有位置的处理接口,大家将水印代码批量替换为自己的后,再分别在新增图片样式-&gt;高级设置处粘贴即可。 <pre>watermark/1/image/水印代码/dissolve/75/gravity/SouthEast/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/South/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/SouthWest/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/East/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/Center/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/West/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/NorthEast/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/North/dx/20/dy/20/ws/0.4
watermark/1/image/水印代码/dissolve/75/gravity/NorthWest/dx/20/dy/20/ws/0.4
</pre> 我将这九个样式规律命名如下,这样以后加水印和调整位置都非常轻松了。 ![水印位置](http://img.sandogeek.com/shuiyinweizhi.png-wk0) 这样用着是挺爽yy的,可是如果以后访问量多起来后流量爆炸但又不想付费怎么办呢? 1. 把图片缓存到免费的CDN从而大量减少七牛流量的使用 2. 上面这个办法其实还是有可能用超,最保险的解决办法是让服务器将七牛所有实际展示的图片备份到本地(当然这种麻烦事交给代码解决),再用代码将所有七牛外链替换成本地地址。至于代码。。。还没写。。。以前好像看到过类似的,大家不妨找找。 #### 每次都要登录七牛传文件感觉有点麻烦啊? 下个qrsbox即可避免这个麻烦。弄好以后,只要把图片放到设置的文件夹,即可把图片上传到设置的空间中。[官方的教程](http://developer.qiniu.com/code/v6/tool/qrsbox.html)已经十分详细,我就不赘述了。 这里补充下如何同步多个目录到多个空间。qrsbox暗转完毕后在C:\Users\你的用户名.qrsbox下有个名称为qrsbox.conf的配置文件,通过编辑这个文件即可做到同步多个目录到不同的空间、同步文件夹内图片的删除操作(不推荐)等功能。这里给出我的配置文件作为参考: <pre>{

"tasks": [

{

"src": "D:\网站相关\sandogeek.com\images",

"dest": "qiniu:bucket=你的bucket名称",

"deletable": 0,

"syncdur": 0

},
{

"src": "D:\网站相关\sandogeek.com\无保护",

"dest": "qiniu:bucket=你的bucket名称",

"deletable": 0,

"syncdur": 0

}

],

"access_key": "你的AccessKey值(个人面板->密钥管理处获取)",

"secret_key": "你的secret_key值",

"report_mode": 0,

"debug_level": 0

}
</pre> 具体的参数说明请查阅[官方的教程](http://developer.qiniu.com/code/v6/tool/qrsbox.html)。 #### 文件都放一个文件夹,感觉好乱啊 可以考虑在同步文件夹内建一些文件夹用来分类,然后用ignore文件避免同步这些文件夹内的内容。目前我只建了了个used文件夹用于把用过的图扔进去。方法是在设置同步的文件夹内新建一个.qrsignore.txt文件,文件内容参考: <pre>used/

具体的请查阅官方的说明

补充:如果喜欢使用自带编辑器写作的话可以尝试使用七牛图传插件,在wordpress插件安装界面输入qiniu可在线安装,可以点击这里看具体使用介绍
最后祝大家使用愉快,有问题欢迎在下方留言。