Azure的Blob儲存可以作為Http的服務來使用。很多客戶已經把Blob作為圖片儲存的服務,這樣稍作程式碼的修改,解決了圖片伺服器頻寬、效能等多種問題。
但同時問題也出現了:在傳統Http的服務中很多meta屬性是可以設定的,但在blob中如何設定。
比如,在Apache中,可以設定靜態內容的快取時間:
如果想把max-age的時間更改的更長,在Apache中,可以修改配置檔案/etc/httpd/conf/httpd.conf
#LoadModule headers_module modules/mod_headers.so
去掉註釋,新增:
header set cache-control "max-age=36000"
再訪問快取就設定成36000了。
但如果圖片是儲存在Azure的blob儲存上,這些屬性如何修改呢?
首先用Blob Explorer開啟Storage Account。Blob Explorer在下面的連結下載:
https://azurestorageexplorer.codeplex.com/
在輸入相應的儲存賬戶的資訊後,可以看到儲存中的內容:
用View開啟其中一個檔案,檢視其屬性:
可以看到Cache Control的屬性,並且是可以更改的。更改這個屬性為public, max-age=2400,點選Update Properties。
通過Chrome開啟這個圖片,再通過F12檢視,已經更改過來了:
如果有大量的圖片資訊需要更改,可以通過PowerShell指令碼的方式進行更改:
$sa = Get-AzureRmStorageAccount -ResourceGroupName hwblob -Name hwblob
$blobs = $sa | Get-AzureStorageBlob -Container test
foreach($blob in $blobs){ write-host $blob.ICloudBlob.Properties.CacheControl $blob.ICloudBlob.Properties.CacheControl = "public, max-age=2400" $blob.ICloudBlob.SetProperties() write-host $blob.ICloudBlob.Properties.CacheControl }