我有asp.net項目。我想在天青的平臺上發佈它。我的項目包含不同的靜態內容:圖像,JavaScript,CSS,HTML頁面等。我想將這些內容存儲在azure blob存儲中。所以,我的問題是: 1)有什麼辦法可以將這個內容從我的應用程序遷移到blob存儲的過程自動化嗎? 2)如何使用blob存儲中的數據?任何例子都會很棒!將ASP.NET項目的靜態內容遷移到Windows Azure平臺
最好的問候, 亞歷山大
我有asp.net項目。我想在天青的平臺上發佈它。我的項目包含不同的靜態內容:圖像,JavaScript,CSS,HTML頁面等。我想將這些內容存儲在azure blob存儲中。所以,我的問題是: 1)有什麼辦法可以將這個內容從我的應用程序遷移到blob存儲的過程自動化嗎? 2)如何使用blob存儲中的數據?任何例子都會很棒!將ASP.NET項目的靜態內容遷移到Windows Azure平臺
最好的問候, 亞歷山大
首先,你正在試圖做的可以創建跨站點腳本是什麼(他們會在不同的域名)或安全問題(如果你使用SSL) 。所以請確保你真的想分離你的網站的其他部分的靜態文件。
也就是說,最簡單的方法是使用大量Windows Azure存儲管理實用程序(Storage Explorer或Cerebrata的Storage Studio都可以)中的任何一個來將靜態內容上載到Windows Azure存儲空間容器。然後將該容器的權限設置爲publis read,以便任何具有Web瀏覽器的人都可以訪問該容器的內容。
最後,更改指向內容的所有引用以指向blob存儲中的新URI並部署您的ASP.NET Web角色。
雖然如此,如果我是你,我真的會看着你想用這種方法完成的事情。通過將它放置在blob存儲中,您可以訪問一些東西(如CDN啓用),但作爲一種折衷,您會失去對其他許多控制的控制權(例如通過IIS的簡化訪問控制以獲取請求日誌以告知何時下載您的圖像文件需要萬億次才能試用並運行帳單)。所以除非有這樣的需求,否則我一般會推薦它。
向@ Brent的答案添加一點:將靜態內容卸載到blob存儲時會帶來更多好處,例如減少對Web角色實例的負載。
我寫了關於this similar StackOverflow question更詳細的答案。
您能否告訴我在blob和CDN中存儲內容是一樣的嗎? – 2012-04-10 13:12:00
從您的角度來看,存儲的實際步驟和位置是相同的。您只需爲存儲靜態內容的存儲帳戶激活CDN,然後將URL更改爲指向URL的「CDN」版本(基於您創建的CDN名稱空間)。此時,您的內容將根據需要加載到一個或多個CDN節點中,然後從那裏提供服務。注意:您無法強制對象到期。如果您將JPG的TTL設置爲24小時,然後在5小時後上傳新的JPG,則最終用戶將不會再看到19小時的更新。 – 2012-04-10 15:09:46
根據您對布倫特的評論,您可能需要考慮將內容上傳到Blob存儲,然後通過WebRole代理它。你可以使用類似HttpModule的東西來完成相當無縫的工作。
這有兩個主要優點:
缺點:
我有一個相當簡單的模塊,我寫這個來做這件事。我還沒有到處公開發布它,但如果你要這樣做,我可以向你發送代碼或其他東西。
通過在每個實例內的localstorage中緩存靜態內容,您可以採取更進一步的措施。這可以減少針對頻繁訪問的文件的Azure存儲的連續命中以及延遲。如果你把這個緩存放到web應用程序根目錄下的一個可寫入(應用程序)區域,你甚至可以避免使用HttpModule。 :) – BrentDaCodeMonkey 2012-04-10 21:58:16
你可以,但如果斑點正在更新,那麼你也必須處理緩存一致性問題。我拋出了它,而不是簡單的方法。 :) 但是,如果你想變得非常聰明,你可以運行一個後臺進程/線程來每隔一段時間對所有本地存儲文件進行條件更新。 – 2012-04-11 01:00:55
是的,您能否通過我的電子郵件將您的模塊寄給我[email protected] – 2012-04-11 08:15:42
感謝您的回覆!由於簡單更新,我需要在Blob中存儲靜態內容。例如,我需要以aspx形式更新圖片。更新完整的網站insl我會發現這個圖片blob,只是替代它。 – 2012-04-10 12:43:13
有什麼不錯的地方在於,通過'$ logs',Storage Analytics將爲您提供Blob訪問的可追溯性。您可以閱讀有關分析的更多信息[此處](http://blogs.msdn.com/b/windowsazure/archive/2011/08/03/announcing-windows-azure-storage-analytics.aspx) – 2012-04-10 12:43:30