更新最新的研究:
标准的CDN应该有两种工作模式:
Pull:网站系统只需要简单的把资源地址改为CDN前缀的地址就可以了,不需要做任何配合工作。当用户访问资源时,通过CDN网络来获取,由CDN网络进行cache和优化。
Push:网站需要主动的将资源推送给CDN网络,此模式能够最优化网站和CDN网络的通信。
七牛其实是云存储,不是CDN,当然它和CDN厂家有合作。
按照我的理解,应该可以这样利用七牛的云存储:
静态内容的云加速:我们手动的将静态内容上传到七牛的公共空间,然后在CDN模块中配置 Origin Pull模式,然后配置CDN mapping。
但是对于一个用动态内容的网站,如何利用七牛的云存储呢?
因为网站会有大量用户上传的图片,如何将这些图片及时地同步到七牛的公共空间上,是一个需要解决的问题,至少七牛没有现成的解决方案。
CDN模块还有一个工作模式是File Conveyor,它的大致原理是在后台运行一个python写的File Conveyor,由它实现网站资源文件到CDN的同步,一旦同步完成,会将同步结果写到SQLite数据库中。
我想Drupal会根据文件是否已同步到CDN,来决定网页从哪里获取资源文件。
现在的问题是,七牛好像不是以FTP等方式上传文件的,它有一个专门的同步工具,但不会有Drupal所需要的SQLite的输出,所以看起来这个路走不通。当然可以改用支持FTP的又拍云,或者尝试根据七牛的API扩展File Conveyor,让它支持七牛。