İçeriğin Tarayıcıya Gönderilmesi


Bir ASP betiği işletildiğinde, ASP ayraçlarıyla ya da <SCRIPT> etiketi ile çevrelenmemiş herhangi bir metin ya da grafik de tarayıcıya yönlendirilir. Ayrıca Response nesnesi kullanılarak da içerik tarayıcıya açık bir şekilde gönderilebilir.

İçeriğin Gönderilmesi
ASP ayraçları arasından ya da bir yordamdan gelen içeriği tarayıcıya göndermek için, Response nesnesinin Write metodunu kullanın. Örneğin, aşağıdaki ifade, kullanıcının sayfayı daha önce ziyaret etmiş olmasına göre farklı bir karşılama mesajı yollar:

<%
If IlkDefa = True Then
Response.Write “<H3 ALIGN=CENTER>Acilis Sayfasına Hosgeldiniz.</H3>”
Else
Response.Write “<H3 ALIGN=CENTER>Acilis Sayfasına Yeniden Hosgeldiniz.</H3>”
End If
%>

Yordam dışında iken, içeriğin kullanıcıya geri gönderilmesi için Response.Write kullanmak zorunda değilsiniz. Betik ayraçları arasında olmayan içerikler direkt olarak kullanıcıya geri gönderilir ki içerik buna göre biçimlendirilir ve görüntülenir. Örneğin, aşağıdaki betik bir önceki betikle tamamen aynı çıktıyı üretir:

<H3 ALIGN=CENTER>
<% If IlkDefa Then %>
Acilis Sayfasına Hosgeldiniz.
<% Else %>
Acilis Sayfasına Yeniden Hosgeldiniz.
<% End If %>
</H3>

Sadece bir seferlik çıktı almak istiyorsanız ya da varolan bir HTML metinine ifadeler eklemenin daha uygun olduğu durumlarda, birleştirilmiş betik komutları kullanın. Bir ifadeyi ayraçlarla bölmek istemiyorsanız ya da tarayıcıya dönen bir dizgiyi oluşturmak istiyorsanız Response.Write’ı kullanın. Örneğin, bir HTML formu tarafından yollanmış değerlerle bir tablonun satırını oluşturan metin dizgisini kurabilirsiniz:

Response.Write “<TR><TD>” & Request.Form(”Adı”) _
& “</TD><TD>” & Request.Form(”Soyadı”) & “</TD></TR>”

Request.Form bir HTML formu tarafından yollanan değerleri döndürür. Ampersand karakteri (&), VBScript için dizgi devam ettirme karakteridir.

İçerik Türünü Ayarlamak
Web sunucu, tarayıcıya bir dosya döndürdüğü zaman, dosyanın içeriğinin ne tür olduğunu tarayıcıya belirtir. Bu, tarayıcının dosyayı kendi kendine mi yoksa başka bir uygulamayı çağırarak mı görüntüleyeceğine karar vermesini sağlar. Örneğin, eğer Web sunucu bir Microsoft Excel tablosu döndürüyorsa, tarayıcının sayfayı görüntülemek için bir Microsoft Excel kopyası çalıştırabilmesi gerekir. Web sunucu, dosya türlerini, dosya ismi uzantılarını bir MIME türleri listesiyle karşılaştırmak suretiyle anlar.

Response nesnesinin ContentType özelliğini, kullanıcıya yolladığınız içeriğin HTTP içerik türü dizgisini ayarlamak için kullanabilirsiniz. Örneğin, aşağıdaki komut grubu kanal tanımlamaları için içerik türünü ayarlar:

<% Response.ContentType = “application/x-cdf” %>

Diğer yaygın içerik türleri: text/plain ( yorumlanmış HTML ifadeleri yerine metin olarak döndürülen içerikler için ), text/gif ( GIF imgeleri için ), ve video/quicktime ( Apple QuickTime® formatındaki filmeler için ). Bir grup standart MIME türleri tanımlanmıştır; ayrıca bir Web sunucu ya da Web tarayıcı birtakım MIME türlerini destekleyebilir. Microsoft Web sunucunuzun desteklediği içerik türlerini öğrenmek için, önce Web sitenizin özellikler penceresini açın (bunun için Internet Service Manager’i kullanın), HTTP Headers’a tıklayın ve sonra File Types’a tıklayın.

Tarayıcıyı Yeniden Yönlendirmek
İçeriği kullanıcıya yollamak yerine, tarayıcıyı Redirect metodunu kullanarak başka bir URL’ye yönlendirebilirsiniz. Örneğin, kullanıcıların uygulamanıza müşteri numarası aldıkları bir kişisel web sayfasından girdiğine emin olmak istiyorsanız, müşteri numaraları olup olmadığını kontrol edebilirsiniz. Numaraları yoksa, onları kişisel web sayfasına yönlendirebilirsiniz.

<%
If Session(”MusteriNo”) = 0 Then
Response.Redirect “homepage.asp”
End If
%>

Tamponlamanız çalışmıyorsa tarayıcıyı, herhangi bir içerik ya da başlık, tarayıcıya dönmeden yönlendirmelisiniz. Response.Redirect ifadesini, <HTML> etiketlerinden önce, sayfanın en üstüne yerleştirin. Böylece tarayıcıya hiçbirşey dönmediğinden emin olursunuz.

Eğer Response.Redirect’i içerik ya da başlıklar tarayıcıya döndükten sonra kullanırsanız, bir hata mesajı alırsınız.

Eğer Response.Redirect’i sayfanın ortasında kullanmak istiyorsanız, bunu Response.Buffer özelliği ile birlikte kullanın.

İçerik Tamponlama
Varsayılmış olarak, Web sunucu, HTML ve işletilen betik sonuçlarını ASP sayfası işletiliyormuş gibi döndürürür. Bununla birlikte, Response nesnesinin Buffer özelliğini, bir sayfadaki tüm sunucu betik komutları herhangi bir içerik kullanıcıya yollanmadan önce işletilecek şekilde ayarlayabilirsiniz.

Tamponlamayı, bir önceki içeriği kullanıcıya yollamak istemediğiniz bir sayfayı işletirken kullanabilirsiniz. Bunun yerine, Response nesnesinin Redirect metoduyla kullanıcıyı başka bir sayfaya yönlendirebilir ya da, tamponu Response nesnesinin Clear metoduyla temizleyip kullanıcıya farklı bir içerik yollayabilirsiniz. Aşağıdaki örnek her iki metodu da kullanmaktadır.

<%
‘ Tamponlamayı çalıştır. Bu ifade <HTML> etiketinden önce yer almalıdır.
Response.Buffer = True %>
<html>
<body>
.
.
.
<%
If Request(”FName”) = “” Then
Response.Clear
Response.Redirect “/samples/test.html”
Else
Response.Write Request(”FName”)
End If
%>
</body>
</html>

Ayrıca Response.Buffer, Web sunucunun, HTTP başlığını, bir betik değiştirmeden önce döndürmesini önler. Bazı özellik ve metodlar, Response.Expires ve Response.Redirect gibi, HTTP başlığını değiştirebilir.

Bir betikte Buffer özelliğini kurduğunuz ve aynı betik içinde Flush metodunu çağırmadığınız zaman, sunucu-istemcinin “Keep-Alive” istemlerini korur. Betikleri bu şekilde yazmanın faydası, sunucu performansını arttırmasıdır. Çünkü sunucu her istemci istemi için yeni bir bağlantı kurmak zorunda değildir ( sunucu, istemci ve herhangi bir proxy sunucunun “Keep-Alive” istemlerini desteklediği farzediliyor ). Fakat, bu yaklaşımın potansiyel bir sakıncası da şudur; tamponlama herhangi bir istemin, o anki .asp dosyası için olan tüm betik işletimlerinin sunucu tarafından bitirilmesine kadar kullanıcıya görüntülenmesini önler. Uzun veya karışık betikler için, kullanıcının sayfayı görmeden önce belli bir süre beklemesini gerektirebilir. Tamponlama, ASP uygulamaları için varsayılmış olarak kapalıdır. Tüm bir ASP uygulaması için tamponlamayı açmak için Internet Service Manager’ı kullanabilirsiniz.

Proxy Sunucularında Tampon Sayfalarına İzin Vermek
Uygulamanız, sayfaları, istemciye bir proxy sunucu üzerinden gönderiyor olabilir. Bir proxy sunucu tarayıcılar adına Web sitelerinden sayfa istemek için çalışır. Proxy sunucu HTML sayfalarını, aynı sayfalar için tekrarlanan istemleri tarayıcıya daha hızlı ve verimli bir şekilde döndürülecek şekilde tamponlar. Proxy sunucu işlem istemleri ve cep sayfalar, ağdaki ve Web sunucu üzerindeki yüklenmeyi azaltır.

HTML sayfalarında yapılan çalışmalar doğru olarak tamponlandığı halde bunlar genelde dinamik olarak oluşturulmuş bilgiler içeren ASP sayfaları için doğru çalışmaz. Örneğin, market stok fiyatlarını raporlayan bir sayfa için zaman uyumlu yapılan bilgilerin sağlanması gerekir. Sadece bir saat geç bir bilgi bile yeterince doğru olmayabilir. Eğer uygulamanız kişisel bilgiler döndürüyorsa, herhangi bir kullanıcının başka bir kullanıcının bilgilerini görmediğinden emin olmalıdır.

Varsayılmış olarak, ASP proxy sunucularının ASP sayfasını kendi kendine tamponlamaması sağlanır ( oysa, imgeler, imge eşlemleri, appletler, ve sayfada belirtilen diğer maddeler tamponlanır. ). Cache-Control HTTP başlık alanını kurmak için Response.CacheControl özelliğini kullanarak bazı sayfalar için tamponlamaya izin verebilirsiniz. Response.CacheControl’in varsayımsal değeri “Private” dizgisidir ki bu proxy sunucuların sayfaları tamponlamasını engeller. Tamponlamaya izin vermek için, Cache-Control başlık alanını Public olarak kurun:

<% Response.CacheControl = “Public” %>

Henüz sayfa içeriği yollanmadan önce HTTP başlıklarının tarayıcıya ya da proxy’e yollanması gerektiği için, ya Response.CacheControl özelliğini herhengi bir HTML etiketinden önce koyun ya da sayfayı tamponlamak için Response.Buffer’i kullanın.

Cache-Control başlık alanı, HTTP 1.1 maddelerinin bir parçasıdır. Sadece HTTP 1.0 ‘ı destekleyen proxylerde ASP sayfaları tamponlanamaz. Çünkü Expires başlık alanı gönderilmez.

Tarayıcılarda Tampon Sayfalarını Önlemek
Her tarayıcı versiyonunun sayfaları tamponlanıp tamponlanmayacağını belirlemek için kendi kuralları vardır. Tarayıcının ASP sayfalarını tamponlamasını engellemek için Expires başlığını kuran Response.Expires’i kullanın:

<% Response.Expires = 0 %>

0 değeri tamponlanmış sayfaların hemen sona erdirilmesine zorlar. Çünkü HTTP başlıkları tarayıcıya sayfa içeriğinden önce gönderilmelidir. Aksi takdirde, Response.Expires özelliğini herhangi bir HTML etiketinden önce koyun ya da sayfayı tamponlamak için Response.Buffer özelliğini kullanın.

Dinamik Kanallar Yaratmak
Internet Explorer 4.0, Web tasarımcılarının Web sayfalarını ortak bir temaya göre gruplandırmasını sağlayan kanal özelliğini tanımlar. Tarayıcıda kanallar, bir kanal çubuğunda yeralır; kullanıcılar bir kanala, ikonuna tıklayarak erişirler. Kanallar arka planda otomatik olarak günlenir; kullanıcılar tarayıcılarına indirilmiş son sayfaları almak için sitenizi tekrar ziyaret etmek zorunda kalmazlar. Kanallar, kullanıcıların otomatik günlenmiş ilgili Web sayfalarını hızlı ve sezgisel bir şekilde görmelerini sağlar.

ASP kullanarak, kullanıcı tercihlerini biraraya getirmek için betikler yazabilir ve dinamik olarak kanallar yaratabilirsiniz. Bir kanal tanım dosyası (.cdf), kanal içeriklerinin organizasyon ve programını saptar. .cdf dosyası içindeki komutlar, HTML etiketlerine benzer bir sözdizimi kullanırlar, böylece betikten öğrenilmesi ve üretilmesi kolaylaşır. Bir kanal tanımı dosyası yaratmak için bir ASP betiği yazarken, betiğe bir .cdx uzantısı verin. ASP, bir dosyayı .cdx uzantısı ile okursa, otomatik olarak application/x-cdf içerik türünü yollar ki bu tarayıcıya baytları kanal tanımları olarak yorumlamasını söyler. Eğer .cdx uzantısını kullanmak istemiyorsanız, betiğiniz içerik türünü manual olarak application/x-cdf ‘e kurmalıdır. Bunu da Response.ContentType kullanarak yapar.

Aşağıda kanal kullanımının nasıl olacağını gösteren bir örnek yer alıyor. HTML formu, kullanıcıdan kanal seçmesini istiyor. Onaylanınca, form kanal tanımlarını oluşturmak için bir .cdx dosyası içinde bir betik çağırıyor.

İstediğiniz kanalları seçin.

<FORM METHOD=”POST” ACTION=”chan.cdx”>
<P><INPUT TYPE=CHECKBOX NAME=Movies> Movies
<P><INPUT TYPE=CHECKBOX NAME=Sports> Sports
<P><INPUT TYPE=”SUBMIT” VALUE=”SUBMIT”>
</FORM>

Chan.cdx içindeki betik, istemle onaylanmış form değerlerine dayanan kanal tanımlamaları oluşturur.

<% If Request.Form(”Filmler”) <> “” Then %>
<CHANNEL>
film sayfaları için kanal tanımlama ifadeleri.
</CHANNEL>
<% End If %>

<% If Request.Form(”Spor”) <> “” Then %>
<CHANNEL>
spor sayfaları için kanal tanımlama ifadeleri.
</CHANNEL>
<% End If %>

Kanallar ve kanal tanımlama dosyaları hakkında bilgi için, microsoft.com (http://www.microsoft.com/ie) üzerindeki Internet Explorer sayfalarına bakınız.

Sunucuya Dosya Yollamak
Bir tarayıcı, Web sunucuya dosya yollamak için Posting Acceptor uygulamasını kullanabilir. Posting Acceptor yükleme dosyaları kullanılacağı zaman, her alınan dosyanın isim ve yerini listeleyen URL-kodlanmış form alanlarını yollar.

Not; Bu yazı 04 Aralık 2003 tarihinde http://www.sorucevap.com/uyeler/dersler.asp?maxiturk adresinde tarafımca yayınlanmıştır.

Kolay Gelsin :)

, , , ,

  1. Henüz hiç yorum yok.

You must be logged in to post a comment.