Statik İçerik Barındırma düzeni
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 çıktı önbelleği için iyileştirilse de, hala statik içerik indirmek için istekleri işlemek zorunda kalır. Bu, daha verimli olarak kullanılabilecek işlem döngülerinin harcanmasına neden olur.
Çözüm
Çoğu bulut barındırma ortamında, bir uygulamanın kaynaklarından bazılarını ve statik sayfalarını bir depolama hizmetine yerleştirebilirsiniz. Depolama hizmeti bu kaynaklara yönelik isteklere hizmet verebilir ve diğer Web isteklerini işleyen işlem kaynakları yükünü azaltır. 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 bulunuyorsa ve diğer içerikler barındırılan bir işlem örneğinde yer alıyorsa, uygulamanın dağıtılması ve güncelleştirilmesi daha zor hale gelir. Özellikle statik içerik betik dosyalarını veya Kullanıcı Arabirimi bileşenlerini içerdiğinde, ayrı dağıtımlar gerçekleştirmeniz ve uygulamayı ve içeriği daha kolay bir şekilde yönetmek için sürümü uygulamanız gerekebilir. Ancak yalnızca statik kaynakların güncelleştirilmesi gerekiyorsa, uygulama paketini yeniden dağıtmaya gerek kalmadan depolama hesabına yüklenebilirler.
Depolama hizmetleri özel etki alanı adlarının kullanılmasını desteklemiyor olabilir. Bu durumda kaynaklar kaynakları içeren dinamik olarak oluşturulmuş içerikten farklı bir etki alanında bulunacağından, bağlantılarda kaynakların tam URL’sini belirtmeniz 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ılamayacak kaynaklara erişimi denetlemek için bir vale anahtarı veya belirteci kullanmayı düşünün. Daha fazla bilgi için bkz. Valet anahtar deseninin .
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, bir depolama hesabında tümüyle statik bir Web sitesi 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üçükse. 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.
Örnek
Azure Depolama, doğrudan bir depolama kapsayıcısından statik içerik sunmak destekler. Dosyalar, anonim erişim istekleri aracılığıyla sunulur. Varsayılan olarak, dosyalar, gibi bir alt etki alanında URL 'SI vardır core.windows.nethttps://contoso.z4.web.core.windows.net/image.png . özel bir etki alanı adı yapılandırabilir ve HTTPS üzerinden dosyalara erişmek için Azure CDN kullanabilirsiniz. daha fazla bilgi için bkz. Azure Depolama 'de 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 kontrol etmeniz gerekirse, Azure Blob depolama alanında dosyaları depolayıp sonra erişimi sınırlandırmak için paylaşılan erişim imzaları oluşturabilirsiniz.
İ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 imzanın URL 'ye dahil olması gerekir.
Statik kaynaklar için dış depolama kullanmayı gösteren örnek bir uygulama GitHubkullanılabilir. Bu örnek, depolama hesabını ve statik içeriği tutan kapsayıcıyı belirtmek için yapılandırma dosyalarını kullanır.
<Setting name="StaticContent.StorageConnectionString"
value="UseDevelopmentStorage=true" />
<Setting name="StaticContent.Container" value="static-content" />
StaticContentHosting.Web projesinin Settings.cs dosyasındaki Settings sınıfı, bu değerleri ayıklamak ve bulut depolama hesabı kapsayıcı URL’sini içeren bir dize değeri oluşturmak için yöntemleri içerir.
public class Settings
{
public static string StaticContentStorageConnectionString {
get
{
return RoleEnvironment.GetConfigurationSettingValue(
"StaticContent.StorageConnectionString");
}
}
public static string StaticContentContainer
{
get
{
return RoleEnvironment.GetConfigurationSettingValue("StaticContent.Container");
}
}
public static string StaticContentBaseUrl
{
get
{
var blobServiceClient = new BlobServiceClient(StaticContentStorageConnectionString);
return string.Format("{0}/{1}", blobServiceClient.Uri.ToString().TrimEnd('/'), StaticContentContainer.TrimStart('/'));
}
}
}
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ı src özniteliği için URL’yi oluşturmak için StaticContentUrl yöntemini kullanan bir görüntü öğesi içerir.
<img src="@Html.StaticContentUrl("~/media/orderedList1.png")" alt="Test Image" />
Sonraki adımlar
- Statik Içerik barındırma örneği. Bu kalıbı gösteren örnek bir uygulama.
- Vale Anahtarı düzeni. Hedef kaynakların anonim kullanıcılara açık olmaması gerekiyorsa, doğrudan erişimi kısıtlamak için bu kalıbı kullanın.
- Azure 'Da sunucusuz Web uygulaması. Sunucusuz bir Web uygulaması uygulamak için Azure Işlevleri ile birlikte barındırılan statik Web sitesi kullanan bir başvuru mimarisi.