Server.Transfer یکی از متدهایی هست که به متدهای موجود در ASP 2.0 اضافه و به هنگام ارائه ASP 3.0 معرفی شد . پیش از این در ASP 2.0 برای انتقال به صفحهای دیگر از متد Response.Redirect استفاده میشد ( اگرچه در نسخه 3 همچنان امکان استفاده از متد قدیمی وجود داره ) که در نسخهی جدید این روند با استفاده از متد Server.Transfer هم انجام میشه .
به طور خیلی خلاصه وقتی از Response.Redirect استفاده میکنید در واقع مراحل زیر طی میشوند :
- ارسال پیامی مبنی بر لود آدرس URL جدید به مرورگر وب دستگاه کاربر ( کلاینت )
- دریافت پیام توسط مرورگر وب دستگاه کاربر ( کلاینت )
- اعلام درخواست دریافت اطلاعات آدرس جدید به سرور
- پردازش درخواست ارسالی در سرور و ارسال اطلاعات مربوطه ( کدهای HTML صفحهی جدید ) به مرورگر وب دستگاه کاربر ( کلاینت )
واضحه که برای اجرای یک دستور و رسیدن به هدف اصلی بار زیادی به شبکه وارد میشه و در سرعت برنامه هم تأثیر منفی خودش رو میذاره . برای جلوگیری از تحمیل بار اضافی بهتره از Server.Transfer استفاده کنید . با استفاده از این متد به جای اینکه درخواست دریافت اطلاعات صفحهی جدید از کلاینت ارسال بشه ، مستقیماً در سرور اعلام نیاز برای تغییر دستورات اجرا شده به دستورات صفحه مورد نظر انجام میگیره . یعنی در واقع مراحل یک ، دو و سه که در بالا بهشون اشاره شد حذف میشوند .
موقع استفاده از Server.Transfer به این موارد دقت کنید که :
- هنگام استفاده از این متد اگرچه آدرس صفحه در پشت صحنه تغییر کرده و پردازشهای لازم روی فایل با آدرس جدید صورت میگیره ولی آدرس نمایش داده شده در نوار آدرس مرورگر وب همان آدرس ابتدایی خواهد بود . ( چون هیچگونه پیامی مبنی بر تغییر آدرس به دستگاه کاربر ارسال نمیشه )
- زمانی میتونید از این متد استفاده کنید که صفحهی مقصدتون برای انتقال جزوی از سایت خودتون باشه ، به این معنی که نمیتونید مثلاً به سایت یاهو از این طریق لینک کنید . ( دلیلش هم کاملاً روشنه ! )
در مورد متد Server.Execute هم باید بگم که ربطی به دو متد قبل نداره . در واقع این متد کاری که انجام میده مشابه includeها هست ( با کمی تفاوت ) . وقتی در یک صفحه از این متد استفاده میکنید ، دستورات فایل اصلی شما تا رسیدن به این متد اجرا میشوند ، سپس کدهای موجود در آدرس مشخص شده ( فایل اشاره شده با استفاده از این متد ) اجرا میشوند و در آخر ( پس از اجرای آخرین دستور فایل اشاره شده ) ادامه دستورات فایل ابتدایی اجرا میگردند .
برای مثال فرض کنید دو فایل file1.asp و file2.asp داریم . دستورات هر فایل به این شکل است :
file1.asp
Test1 (File1)
<%Server.Execute " file2.asp"%>
Test3 (File1)
file2.asp
Test2 (File2)
با اجرای فایل اول ( file1.asp ) مشاهده میکنید که خروجی زیر نمایش داده میشه :
Test1 (File1)
Test2 (File2)
Test3 (File1)
یعنی ابتدا خط اول از فایل اول اجرا میشه ، سپس اجرای دستورات فایل دوم آغاز میشه و بعد از پایان کار فایل دوم ، به فایل اول بازگشته ، ادامه دستورات اجرا میشوند .
امیدوارم با خوندن مطالب بالا به نتیجه مورد نظرت رسیده باشی .