Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Statik içeriği, bunları doğrudan istemciye teslim edebilecek bulut tabanlı bir depolama hizmetine dağıtın. Bu yüksek maliyetlere neden olabilecek işlem örneklerine yönelik ihtiyacı azaltabilir.
Bağlam ve sorun
Web uygulamaları genellikle bazı statik içerik öğeleri içerir. Statik içerikler istemci tarafından kullanılabilen HTML sayfaları ve resimler veya belgeler gibi diğer kaynakları bir HTML sayfasının parçası olarak (örneğin satır içi resimler, stil sayfaları ve istemci tarafı JavaScript dosyaları) veya ayrı indirmeler (örneğin PDF belgeleri) olarak içerebilir.
Web sunucuları dinamik işleme ve çıkış önbelleğe alma için iyileştirilse de, statik içeriği indirme isteklerini işlemeleri gerekir. Bu, daha verimli olarak kullanılabilecek işlem döngülerinin harcanmasına neden olur.
Çözüm
Çoğu bulut barındırma ortamına, bir uygulamanın kaynaklarından ve statik sayfalarından bazılarını depolama hizmetine yerleştirebilirsiniz. Depolama hizmeti, bu kaynaklara yönelik istekleri karşılayarak diğer web isteklerini işleyen bilgi işlem kaynakları üzerindeki yükü azaltabilir. Bulutta barındırılan depolama için maliyetler genellikle işlem örneklerine göre çok daha düşüktür.
Bir uygulamanın bazı bölümlerini bir depolama hizmetinde barındırırken, dikkat edilmesi gereken konular uygulamanın dağıtılmasıyla ve anonim kullanıcılar tarafından kullanılmaması gereken kaynakların güvenliğinin sağlanmasıyla ilgilidir.
Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:
Barındırılan depolama hizmeti kullanıcıların statik kaynakları indirmek için erişebileceği bir HTTP uç noktasını açığa çıkarmalıdır. Bazı depolama hizmetleri ayrıca HTTPS’yi de destekler, bu nedenle kaynakları SSL gerektiren depolama hizmetlerinde barındırmak mümkündür.
En yüksek performans ve kullanılabilirlik için, depolama kapsayıcısının içeriklerini dünyanın dört bir yanından birden fazla veri merkezinde önbelleğe almak üzere bir içerik teslim ağı (CDN) kullanmayı göz önünde bulundurun. Ancak CDN kullanmak için genellikle bir ücret ödemeniz gerekir.
Depolama hesapları genellikle bir veri merkezini etkileyebilecek olaylara karşı dayanıklılık sunmak üzere varsayılan olarak coğrafi olarak çoğaltılır. Bu, IP adresinin değişebileceği ancak URL’nin aynı kalacağı anlamına gelir.
Bazı içerikler bir depolama hesabında, diğer içerik ise barındırılan bir işlem örneğinde yer alıyorsa, uygulamayı dağıtmak ve güncelleştirmek daha zor hale gelir. Özellikle statik içerik betik dosyalarını veya kullanıcı arabirimi bileşenlerini içerdiğinde, uygulamayı ve içeriğini ayrı ayrı dağıtmanız ve güncelleştirmeleri daha etkili bir şekilde yönetmek için bunları sürüme almanız gerekebilir. Ancak yalnızca statik kaynakların güncelleştirilmiş olması gerekiyorsa, uygulama paketini yeniden dağıtmadan bunları depolama hesabına yükleyebilirsiniz.
Depolama hizmetleri özel etki alanı adlarının kullanılmasını desteklemiyor olabilir. Bu durumda, bağlantıları içeren dinamik olarak oluşturulan içerikten farklı bir etki alanında yer aldıkları için bağlantılardaki kaynakların tam URL'sini belirtmek gerekir.
Depolama kapsayıcılarının genel okuma erişimi için yapılandırılması gerekir ancak kullanıcıların karşıya içerik yüklemesini önlemek üzere genel yazma erişimi için yapılandırılmamış olmadığından emin olmak önemlidir.
Anonim olarak kullanılamaması gereken kaynaklara erişimi denetlemek için bir vale anahtarı veya belirteç kullanmayı göz önünde bulundurun. Daha fazla bilgi için Valet Key tasarım modeli'ne bakınız.
Bu düzenin kullanılacağı durumlar
Bu düzen aşağıdakiler için kullanışlıdır:
Bazı statik kaynaklar içeren web siteleri veya uygulamalar için barındırma maliyetlerini en aza indirme.
Yalnızca statik içerik ve kaynaklardan oluşan web siteleri için barındırma maliyetlerini en aza indirme. Barındırma sağlayıcısının depolama sisteminin özelliklerine bağlı olarak, tamamen statik bir web sitesini bir depolama hesabında barındırmak mümkün olabilir.
Diğer barındırma ortamlarında veya şirket içi sunucularda çalışan uygulamalar için statik kaynakları açığa çıkarma.
Depolama hesabının içeriklerini dünyanın dört bir yanından birden çok veri merkezinde önbelleğe alan bir içerik teslim ağı kullanarak içeriği birden çok coğrafi bölgede konumlandırma.
Maliyetleri ve bant genişliği kullanımını izleme. Statik içeriğin bir bölümü veya tamamı için aynı bir depolama hesabı kullanmak maliyetlerin barındırma ve çalışma zamanı maliyetlerinden daha kolay ayrılmasını sağlar.
Bu düzen aşağıdaki durumlarda kullanışlı olmayabilir:
Uygulamanın statik içeriği istemciye sunmadan önce içerik üzerinde işlem yapması gerekiyorsa. Örneğin, belgeye bir zaman damgası eklemek gerekebilir.
Statik içerik hacmi çok küçüktür. Bu içeriği ayrı bir depolama alanından alma yükü, içeriği işlem kaynağından ayırmanın maliyet avantajından daha fazla olabilir.
İş yükü tasarımı
Bir mimar, Azure İyi Tasarlanmış Çerçeve yapılarında ele alınan hedefleri ve ilkeleri ele almak için statik içerik barındırma düzeninin iş yükünün tasarımında nasıl kullanılabileceğini değerlendirmelidir. Örneğin:
| Sütun | Bu desen sütun hedeflerini nasıl destekler? |
|---|---|
| Maliyet İyileştirme, iş yükünüzün yatırım getirisini sürdürmeye ve geliştirmeye odaklanır. | Dinamik konaklar kodlanmış iş mantığınızı çalıştırabildiğinden dinamik uygulama konakları genellikle statik konaklardan daha pahalıdır. Statik içerik sunmak için bir uygulama platformu kullanmak uygun maliyetli değildir. - CO:09 Akış maliyetleri - CO:10 Veri maliyetleri |
| Performans Verimliliği , ölçeklendirme, veri ve kod iyileştirmeleri aracılığıyla iş yükünüzün talepleri verimli bir şekilde karşılamasını sağlar. | Sorumluluğu dışlaştırılmış bir konağa boşaltmak, tıkanıklığı azaltmaya yardımcı olur ve uygulama platformunuzu yalnızca iş mantığı sağlamak için kullanmanıza olanak tanır. - PE:07 Altyapıyı kodlayın |
Her tasarım kararında olduğu gibi, bu yaklaşımın diğer yapı taşlarının hedefleri açısından ortaya çıkarabileceği ödünleşimleri göz önünde bulundurun.
Örnek
Azure Depolama, statik içeriğin doğrudan bir depolama kapsayıcısından sunulmasını destekler. Dosyalar anonim erişim istekleri aracılığıyla sunulur. Varsayılan olarak, dosyaların core.windows.net alt etki alanında, örneğin https://contoso.z4.web.core.windows.net/image.png, bir URL'si vardır. Özel bir etki alanı adı yapılandırabilir ve dosyalara HTTPS üzerinden erişmek için Azure CDN'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Depolama'da statik web sitesi barındırma.
Statik web sitesi barındırma, dosyaları anonim erişim için kullanılabilir hale getirir. Dosyalara kimlerin erişebileceğini denetlemeniz gerekiyorsa, dosyaları Azure blob depolamada depolayabilir ve ardından erişimi kısıtlamak için zaman ve kapsam sınırlı paylaşılan erişim imzaları oluşturabilirsiniz. Oluşturulan erişim imzaları Microsoft Entra kullanıcı temsilcisi belirteçleri kullanmalıdır ve kısa ömürlü olmalıdır.
İstemciye teslim edilen sayfalardaki bağlantıların kaynağın tam URL'sini belirtmesi gerekir. Kaynak, paylaşılan erişim imzası gibi bir vale anahtarıyla korunuyorsa, bu imza URL'ye eklenmelidir.
Statik kaynaklar için dış depolamanın kullanılmasını gösteren örnek bir uygulama GitHub'da kullanılabilir. Bu örnek, genel, statik içeriği barındıran depolama hesabı URL'sini ve kapsayıcıyı belirtmek için bir yapılandırma dosyası kullanır.
Geçirilen URL ASP.NET kök yol karakteri (~) ile başlıyorsa, StaticContentUrlHtmlHelper.cs dosyası içindeki StaticContentUrlHtmlHelper sınıfı bulut depolama hesabına yolu içeren URL’yi oluşturan StaticContentUrl adlı bir yöntemi açığa çıkarır.
public static class StaticContentUrlHtmlHelper
{
public static string StaticContentUrl(this HtmlHelper helper, string contentPath)
{
if (contentPath.StartsWith("~"))
{
contentPath = contentPath.Substring(1);
}
contentPath = string.Format("{0}/{1}", Settings.StaticContentBaseUrl.TrimEnd('/'),
contentPath.TrimStart('/'));
var url = new UrlHelper(helper.ViewContext.RequestContext);
return url.Content(contentPath);
}
}
Views\Home klasöründeki Index.cshtml dosyası StaticContentUrl özniteliği için URL’yi oluşturmak için src yöntemini kullanan bir görüntü öğesi içerir.
<img src="@Html.StaticContentUrl("~/media/orderedList1.png")" alt="Test Image" />
Sonraki adımlar
- Statik İçerik Barındırma örneği. Bu düzeni gösteren örnek bir uygulama.
İlgili kaynak
- Vale Anahtarı düzeni. Hedef kaynakların anonim kullanıcıların kullanımına açık olmaması gerekiyorsa, doğrudan erişimi kısıtlamak için bu düzeni kullanın.