魏衡,微軟云資深架構(gòu)師援岩,國內(nèi)Azure最早的架構(gòu)師之一稿茉。
Azure的Blob存儲可以作為Http的服務(wù)來使用锹锰。很多客戶已經(jīng)把Blob作為圖片存儲的服務(wù),這樣稍作代碼的修改漓库,解決了圖片服務(wù)器帶寬恃慧、性能等多種問題。
但同時問題也出現(xiàn)了:在傳統(tǒng)Http的服務(wù)中很多meta屬性是可以設(shè)置的渺蒿,但在blob中如何設(shè)置痢士。
比如,在Apache中茂装,可以設(shè)置靜態(tài)內(nèi)容的緩存時間:
如果想把max-age的時間更改的更長怠蹂,在Apache中善延,可以修改配置文件/etc/httpd/conf/httpd.conf
#LoadModule headers_module modules/mod_headers.so
去掉注釋,添加:
header set cache-control "max-age=36000"
再訪問緩存就設(shè)置成36000了城侧。
但如果圖片是存儲在Azure的blob存儲上易遣,這些屬性如何修改呢?
首先用Blob Explorer打開Storage Account赞庶。Blob Explorer在下面的鏈接下載:
https://azurestorageexplorer.codeplex.com/
在輸入相應(yīng)的存儲賬戶的信息后,可以看到存儲中的內(nèi)容:
用View打開其中一個文件澳骤,查看其屬性:
可以看到Cache Control的屬性歧强,并且是可以更改的。更改這個屬性為public, max-age=2400为肮,點擊Update Properties摊册。
通過Chrome打開這個圖片,再通過F12查看颊艳,已經(jīng)更改過來了:
如果有大量的圖片信息需要更改茅特,可以通過PowerShell腳本的方式進(jìn)行更改:
$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
}