从开始折腾WordPress到切换为静态网站,我就一直在纠结图片编辑和保存的问题。这包括两个方面:一是保持编辑文章时的流畅度,尤其是需要插入大量图片时;二是规划一个扩展性好的图片URL和对应的物理地址。第一个问题主要涉及到文章编辑,这方面Windows Live Writer最符合我的需求,但可惜它不能满足我其它的需求,在我的另一篇文章 WordPress文章编辑发布方案 中有所阐述,这里我不多说了。第二个问题其实就是规划图床(虽然说是图床,但是其实也包括了附件、CSS、JS等文件)的问题,是本文探讨的中心。
要点
在读图时代,单图胜万言实在是每个博客作者都应该牢记在心的金玉良言,实际上其它文章类别也是如此。不过,博客图片的成本可要远远高于文字(创作成本、流量空间成本、管理成本等)。我把博客图床规划时需要考虑的问题总结如下:
- 数据安全性。对一个博客而言,数据的重要性是不言而喻的,如果图片随时可能丢失或损坏,没有人可以睡得安稳。对于第三方服务我们还是应该采取保守策略,毕竟连Google都不再是初恋时的Google了。
- 备份成本。如果无法保证数据时刻处于安全的状态,那么只能自己勤快地手工备份了,如果有高度自动化的备份流程可以省不少心。
- 流量、空间等资源限制。大量的图片托管在一个可靠的服务器上是省心但是伤钱的事情,不是高帅富就只能用其它方案逆袭。
- 可迁移性。写一个博客可以折腾的事多了去了(实际上这也是乐趣之一),包括域名、空间、博客引擎、服务器环境等等,总不能每次都去手动改URL吧。
- 可扩展性。博客如果壮大了,就会需要一些新的功能,比如防盗链、图片压缩等,其实也是不得已而为之。这时候能够统一处理所有图片无疑是很方便的。
- 访问速度。考虑到我们在网速上无法与国际接轨,国外优秀的服务往往会因为这点而处于劣势。
- 局域网环境。如果你不知道我在说什么,那我就给你两个关键词:备案、长城。如果你一眼就看懂了,那就在心里默念一个字“凸”吧!
方案
以下我将详细列举比较各种常见方案,由于对于不同的人而言优缺点可能是完全相反的,所以请读者注意这些观点仅供参考。
不分家
即采用博客引擎的默认设置,对于WordPress而言是自动上传到upload文件夹,对多数静态博客而言是使用相对路径访问图片资源,整站生成时会复制到指定目录。这种情况下图片的URL是很规范的,基本上是http://domainname.com/upload or static/xxx.jpg
的形式,在编辑文章时也很方便,但是它把程序和图片绑定在了一起,如果迁移,两者必须保持位置关系,否则就需要修改文章内的引用地址(WordPress可以使用SQL语句,静态博客需要sed
和正则表达式进行转换。)简而言之,该方案适合不折腾、稳定经营博客的用户。
第三方图床托管(不绑定域名)
虽然免费主机现在一抓一大把,但是大空间大流量稳定又省钱的实在打着灯笼也难找,因此把图片分离出去一直都有着很稳定的市场需求,有需求就有hack,在这个领域网民们确实展示除了他们非凡的智慧。简单想想就可以列出很多:
- 图片托管商:Picasa、Photobucket、flickr之流
- 各种网盘外链,比如Dropbox
- 各类博客、微博发布平台外链
- Skydrive、Google doc外链(需繁琐地寻找地址)
正规的内容管理网站往往会在用无规则的字串掩盖图片的真实地址,甚至改变文件名,不仅仅在文章中看起来丑陋,而且不利于编辑和长期的统一管理;更大的隐患是一旦托管商关闭服务,那么这些老图片都将变成刺眼的红叉,尤其是很少有托管商提供方便的备份导出方法,即便你导出了,那么地址又怎么改呢?基于这些理由,我个人很不喜欢这种方式。
第三方托管(绑定域名)
与第二类方案有区别的地方在于,虽然仍然是第三方托管,但是由于可以绑定域名,所以链接地址得到了规范,而且往往还有成熟的备份策略,主要有这么几种:
- gh-pages等社交编程类服务托管
- 各类云计算平台:Heroku、OpenShift、GAE、SAE
- Sourceforge(特殊,类似虚拟主机)
- 收费云存储平台:又拍、阿里OSS、华为直链Google Cloud Storage、Amazon S3
本来Dropbox的外链可以绑定域名的,但是由于新的规则中外链地址加入了随机字符,绑定域名已经意义不大,因此放到了第二类方案中。
对前三种方法,我想说的是使用者应当感谢开源世界为整个人类的信息交流作出的贡献,如果有能力,你可以贡献自己的代码,如果没有,你也应该常怀感恩之心,毕竟,免费不代表没有价值,甚至有它还有不一般的价值。第四种云存储方案近来十分流行,应该是大势所趋。对我而言,国外两个巨头提供的虽然价格高高在上(也有免费配额),但是仍然十分诱人;至于国内的,备案两个字就让我完全死心了。
截至这篇文章完成,我采取的正是gh-pages托管的方式,但是正如我所言,这种只索取不付出的行为会对奉献者产生极大的伤害,因此,寻找更可持续的方式是我现在面临的问题。
自建分离图床
如果想要获得最完全最自由的控制,自建分离图床就是终极的解决方案,当然它的代价就是高昂的技术门槛和管理成本、经济成本。具体而言,你还是可以选择喜欢的方式:
- 博客与图片“同床异梦”。虽然在同一个空间下,但是图片绑定到
img.domian.com
这样的二级子域名下。 - 博客与图片“分而治之”。这就意味着你需要两个空间,由于两者的文件形式不同,因此管理和备份的方式也不同。
这种方案的灵活还体现在你可以自由地选择空间,由于数据库(或者静态网页)体积流量都小,而图片等体积大、流量多,因此可以分别选择不同类型的空间Hosting,甚至是免费空间(只要备份做得到位!)。不同“空间”可以获取的权限不同(ftp、ssh、root),这种差异决定了上传和备份的方式也不相同,因此也可以说这种方式是最折腾人的。
结语
不同的人对于技术的理解、对于博客的追求乃至经济、时间、精力都不相同,因此不能用一套标准来衡量所有的方案,但幸运的是我们还有这很多选择,虽然其中一部分是在恶劣的环境下的产物。用什么方式也许不重要,重要的是我们的付出转化为了一段段文字在这个世界的众多黑暗角落里以0和1的形式奔腾着,它们才是我们的财富。