Windows ">Azure Storage 是 Windows Azure 平台上面提供永久性数据储存服务,除了前一篇介绍的 SQL Database 之外,还有用于储存档案(正确地说是
BLOB)的「Blob 储存服务」,还有可以用来储存 Key-Value 资料的「Table 储存服务」,这篇文章将先针对「Blob 储存服务」的使用来做介绍。
Windows Azure Blob 储存服务简介
Windows Azure Blob 储存服务主要是提供储存大量的纯文本或二进制的数据,在存储器上的每一笔数据对象就好像文件系统上的档案一般。储存在Windows Azure Blob存储器上的资料都可以透过URL存取(透过验证或完全公开),并且拥有下列特性:
目前一个 Windows Azure Blob 存储器可以提供最多 200TB 的储存空间(根据使用量计费)。
一个 Windows Azure 订阅账号最多可以建立 5 个 Windows Azure Blob 存储器。
可以选择是否跨区域数据备援(默认会在单一区域内储存多份数据复本以确定可靠度)
可以透过 RESTful Web Service 的方式操作资料的 CRUD(Create, Read, Update, Delete)
提供数据存取的监控及记录
你的 PHP 应用程序不一定要放在 Windows Azure 上才能使用 Windows Azure Blob 储存服务,由于能透过 RESTful Web Service 或是 Windows Azure SDK for PHP 的方式存取,即便是在自己的 hosting 上也可以使用,通常在下列几种情况下较适合使用 Blob 存储器服务:
Hosting环境的永久储存空间有限或是根本没有永久储存空间
Windows Azure 网站服务仅提供 1GB 的永久性储存空间,而 Windows Azure 云端服务则是完全没有永久性储存空间,在这样的状况之下,都不建议应用程序假设执行环境中有个文件系统可以直接操作,也就是要储存不是放在数据库中的数据就不应该使用档案来处理,而是可以将它储存在Windows Azure Blob储存服务这样的云端储存平台。
而且把应用程序中关于档案的操作抽离到云端平台之后,执行环境变单纯了,在部署到异质平台,或是要搬 hosting 时就会更方便了。
避免档案下载大量吃掉网站带宽
即使你觉得PHP应用程序执行环境有足够的永久性储存空间,但若你的应用程序里许多档案都放在同一个环境,而且是透过同样的 domain 来下载,在用户在下载大档案吃掉输出带宽,或是同时下载大量档案(如加载一个页面时同时加载 CSS、JavaScript 或图片档案)占掉过多的联机等等状况都会对资源造成耗损,这时候把档案放在 Windows Azure Blob 存储器上,就可以有效减缓这些问题。
安装 Windows Azure SDK for PHP
Windows Azure 团队也提供了一套给 PHP 应用程序使用的 Windows Azure SDK,并且将此 SDK 的原始码公开在 GitHub 上,同时可参考在该页面上的说明来选择安装 SDK 的方法(Git、PEAR 或 Composer )。透过 SDK 来存取 Windows Azure Blob 储存服务就不必自己处理 RESTful Web Service 的呼叫。
接下来的文章都会使用 SDK 的方式来操作 Windows Azure Blob 储存服务。
情境:将网页前端用到的静态档案放在 Blob 存储器
在许多网页前端加速的建议文章中,都会建议将网页前端中会用到的静态档案(如:CSS、JavaScript、图文件等非程序档案)放在与网站不同的网域下(参考:High Performance Websites 的 Rule 8: Make JavaScript and CSS External 的例子),以增加浏览器平行下载的数量(因为浏览器针对单一网域会限制平行下载的数量)。
做法很简单,可以在Windows Azure Blob储存服务中先建立一个公开存取的容器(container)
在 Windows Azure 管理后台中的存储器可以直接建立容器(container)
可以根据需求建立公开或非公开的容器