Sunday, November 13, 2011

Web geliştirmede yaşanan klasik sorunlardan biri CSS veya JS güncelleme durumlarında browser cache ine takılmadır sanırım. Her ne kadar büyük çapta projeler olsa bile css & js güncelleme durumlarında çoğu zaman versiyonlama gözden kaçabilmektedir.

Versiyonlamadan kısaca bahsedecek olursak, bir .aspx dosyaya veya MVC için bir .cshtml e css&js dosyalarını include ederken (ben örneğimi MVC 3 Razor üzerinden göstereceğim )

olarak belirtiriz.

Genel olarak versiyonlamayı da şu şekilde yaparız

Yani css & js dosyalarımıza manuel olarak versiyon veririz. Amacımız da bu versiyonlama işini otomatize edip artık versiyonlama derdinden kurtulmak.

Gelelim bu işi nasıl yapacağımıza ;

Visual Studio 2010 da bir ASP.NET MVC 3 projesi açıyorum Razor view ile. “Common” isminde bir klasör ekliyorum projeme ve bu klasöre de “HtmlExtensions” adında static bir class ekliyorum. Namespace olarak da System.Web.Mvc yazıyoruz. Class ımız da 2 adet static metod ekliyoruz.

Metodlarımızı inceleyecek olursak,

serverFilePath değişkenine dosyamızın full path ini alıyoruz, artık elimizde css & js dosyamızın tam adresi var, version değişkenine de bu dosyanın son güncellenme tarihini alıyoruz. Yani css & js dosyası en son ne zaman değiştiyse bunu kimseye birşey sormadan aldık. Son olarak da bize parametre olarak gelen dosyamızın versiyonlanmış halini geri döndürüyoruz. Buraya kadar bir sorun yok. Peki bu extension class ını projede nasıl kullanacağız ?

Şimdi de cs & js dosyalarımızı çağırdığımız view e gidiyoruz. Ben projemde Views/Shared/_Layout.cshtml de kullanıyorum.

Extension metodlarında ilk parametre, extensionu nereden kullanacağımı belirttiğinden @Html helperi vasıtasıyla metodlarımızı kullanabiliyoruz. İşlem tamam, artık browser css & js dosyalarımızı kendi cacheine alsa da dosyalar değiştiğinde otomatik olarak versiyonunu güncelleyecektir.

Siz de kendiniz deneyerek görebilirsiniz.

Sunday, November 13, 2011 10:56:30 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 

© Copyright 2009, Süleyman PETEK