為什麼要替blob內的檔案設定max-age
,如果你網站相關的靜態檔案是放在blob,那樣設定max-age
的值是比較好的,什麼是max-age
?主要是在網頁中一些靜態檔案的Cache,是透過Http header中的cache control作為控制,通常我們可以設定是屬性有private
、no-cache
、max-age
、must-revalidate
這幾種可以設定,一般你設定private、no-cache、must-revalidate這屬性,進入網站時候都會在讀取一下靜態檔案,若是設定max-age,則是在一個範圍時間內都不會去讀取這個靜態檔案,但是,你若是按下重新整理,不管設定哪一種屬性都會去讀取檔案,也因此設定max-age就有其必要性
通常你靜態檔案跟網站放在一起,可以透過web.config方式去設定http header或是透過程式去控制,不過,若是靜態檔案是放在Azure Blob中,就沒有這樣方便,如果你要透過azure exploer去設定也是可以,但是檔案一多,或是你是透過其他方式將檔案放入時候,就有可能會沒設定到,因此,可以透過Powershell
一次都幫你設定完成,甚至你也可以作到自動化方式去設定
首先必須取得blob讀寫權限
12345$targetSubscription="XXX"$storageAccountsName="AAA"$storageContainers="ABC"#存取帳戶金鑰$storagekey="plVh13GipfmA4k7YaPFf0fUXbRLfrHs1ojjEkB3i5dCgV+oRpDey+hasY/5atBt8P2KozbC6MNCImURwUHu3gg=="取得blob內所有檔案,並設定max-age值
12345$sourceFile = @()$sourceFile = Get-AzureStorageBlob -Container $storageContainers -Blob "*"$totalCount = $sourceFile.Count$cacheControlValue ="max-age=43200"$ctx = New-AzureStorageContext -StorageAccountName $storageAccountsName -StorageAccountKey $storagekey用迴圈方式每一筆去設定就可以
12345678foreach($file in $sourceFile){$Blob = Get-AzureStorageBlob -Context $ctx -Container $storageContainers -Blob $file.Name$CloudBlockBlob = [Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob] $Blob.ICloudBlob$CloudBlockBlob.Properties.CacheControl=$cacheControlValue$CloudBlockBlob.SetProperties()Write-Host $CloudBlockBlob.Properties.CacheControl}
這樣檔案中的Cache control就會被設定max-age了,後續也可以把這powershell去做排程或是其他自動化的設定,就可以達到cache效果