20 Ekim 2011 Perşembe

IIS'de static conent sunumu

IIS 7' de herhangi bir web site'da css, js ve image'lar için de cookie alışverişi yapılır. Özellikle Form Auth vs. gibi authantication yöntemlerinde veya state tutmak için cookie kullanıldığı durumlarda bu veri ciddi oranda büyük olur.
Ortalama bir sayfa isteğinde 50-100 arası dosya browser'a iner. Eğer cache vs gibi özellikler iyi tanımlanmamışsa her defasında bu gerçekleştirilir. Bu dosyalardan ilki static veya dinamik olsun sonuç olarak html'dir ve sonrakilerin büyük çoğunluğu image'dır. (Çöplüğe dönmüş [bir sürü farklı developerların çalıştığı] web site'larda java script ve css de çoktur.) Bu durumda ciddi oranda bir veri cookie alışveri üzerinden sunucu-istemci arasında gidip gelir.

Cookie alışverişini kapatmanın yolu IIS 7 için site özelliklerinden Session State'de bu özellikiği "Not Enabled" olarak ayarlamakdır. Fakat bu yapılınca o site için session tamamen kapatılır ve dinamik sayfalarda hem sunucu hem istemci tarafı state tutmak için işlevsiz hale gelir.




Bu durumda static content için zaten yapılması gereken örn: bir sub domain (yeni bir site) üzerinden static content sunumunu gerçekleştirmek.

Örneğin solution altında bulunan "Assets" dizini için static.xdomain.com adından yeni bir sub domain (yeni bir site) açılır.
O site için "Session Mode" iptal edilir bölyece cookie olayı iptal edilir.

Anahtar noktalar:

Bu sayede compression ve cache'de ayarlanabilir.

Böylece css ve bu css lerin üzerindeki image lar buradan sunulur.

Test için mevcut cookie ler silinmelidir ki yanılgıya düşürmesin.

Statik içeriği ayrı bir domain den sunarken css dosyalarını cache temizlenme problemi için kullanılan yöntem style.css?aaa vs şeklinde. Bu durumda netscaler gibi statik içerik proxy araçları bunları cache'lemek veya ziplemek durumunda mahrum kalıyor.
Buna alternatif çözüm static sub domain'i üzerinde Url route tanımı yapmak örn: static.domain.com/style-version.css. Bu da style.css yönlendirme yapar.

Kaynakça:


Static content in bulunduğu dizin için özel web.config oluşturmak. (Eğer static content mevcut web solution altında ise bazı module'leri disable (override) gerekiyor. Bunun içinde applicationHost.config de bazı değişiklikler yapmak gerekli. Yani shared hosting de pek mümkün değil.
http://www.robertsindall.co.uk/blog/creating-static-content-website-in-iis-7/

http://stackoverflow.com/questions/3060775/stopping-cookies-being-set-from-a-domain-aka-cookieless-domain-to-increase-si

Web config den ve iis manager dan cookiless domain yapmak (session kapatmak)
http://stackoverflow.com/questions/4105149/how-to-respect-serve-static-content-from-a-cookieless-domain-page-speed-rule-in



14 Haziran 2011 Salı

Web site yoklama araçları / Life checker /monitoring

Arkasında kurumsal sponsor bulunan web siteleri için Sitescope vs. gibi gelişmiş monitoring araçları vardır.

Küçük bütçeli projeler için kullanılabilecek "sadece web sitenizin istediğiniz sayfasının yanıt verip vermediğini" belirli aralıklarla kontrol eden ücretsiz servisler vardır.

Bunlardan biri:

paralı
http://www.pingdom.com/

http://nodeping.com
https://www.monitorscout.com


Bu ve bunun gibi servisler ile sitenin hangi oranda ayakta kaldığı ve yanıt süreleri için değerler toplanabilir.

Diğer bir faydasında sürekli ziyaretçi almayan IIS 6 / 7 tabanlı web sitelerinin karşılaştığı sürekli istek gelmemesinden kaynalı Application pool'un hazır olmaması ve sonrasında gelen ilk request'de warm-up için gereken bekleme süresi ile ilgili olumsuz durumu ortadan kaldırması.