سلسلة محاضرات ASP (12) إرسال المحتوى إلى المتصفح
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:59:00
عند معالجة البرنامج النصي ASP، سيتم ببساطة إرجاع أي نص أو رسومات غير متضمنة في محددات ASP أو علامات <SCRIPT> إلى المتصفح. يمكن إرسال المحتوى إلى المتصفح بشكل صريح باستخدام كائن الاستجابة.
إرسال المحتوى لإرسال محتوى إلى المستعرض من خلال إجراء أو محدد ASP، يمكنك استخدام أسلوب الكتابة الخاص بكائن الاستجابة. على سبيل المثال، يمكن أن ترسل العبارة التالية تحية مختلفة اعتمادًا على ما إذا كان المستخدم قد زار هذه الصفحة:
<%
إذا كان FirstTime = صحيح إذن
Response.اكتب "<H3 ALIGN=CENTER>مرحبًا بك في صفحة النظرة العامة</H3>"
آخر
Response.اكتب "<H3 ALIGN=CENTER>مرحبًا بك مرة أخرى في صفحة النظرة العامة</H3>"
نهاية إذا
%>
خارج الإجراء، لا يتعين عليك استخدام Response.Write لإرسال المحتوى مرة أخرى إلى المستخدم. يتم إرسال المحتوى غير الموجود داخل محدد البرنامج النصي مباشرةً إلى المتصفح، الذي يقوم بتنسيقه وعرضه. على سبيل المثال، عملية البرنامج النصي التالية لها نفس مخرجات البرنامج النصي أعلاه:
<H3 محاذاة=مركز>
<% إذا كانت المرة الأولى ثم %>
مرحبًا بك في صفحة النظرة العامة.
<%آخر%>
مرحبًا بك مرة أخرى في صفحة النظرة العامة.
<% نهاية إذا %>
</H3>
استخدم أوامر البرامج النصية المختلطة وHTML عندما تحتاج إلى إرجاع الإخراج مرة واحدة فقط أو عندما يكون من المناسب إضافة عبارات إلى نص HTML موجود. استخدم Response.Write عندما لا تريد فصل عبارة بمحددات أو عندما تريد إنشاء سلسلة يتم إرجاعها إلى المتصفح. على سبيل المثال، يمكنك إنشاء سلسلة نصية لإنشاء صف جدول باستخدام القيم التي يتم إرجاعها من جدول HTML:
Response.اكتب "<TR><TD>" & Request.Form("الاسم الأول") _
& "</TD><TD>" & Request.Form("اسم العائلة") & "</TD></TR>"
ضبط نوع المحتوى عندما يقوم خادم الويب بإرجاع الملف إلى المتصفح، فإنه يخبر المتصفح أيضًا بنوع المحتوى الموجود في الملف. يتيح ذلك للمتصفح أن يقرر ما إذا كان يمكنه عرض الملف نفسه أو يجب عليه الاتصال بتطبيق آخر. على سبيل المثال، إذا قام خادم الشبكة بإرجاع جدول Microsoft Excel، فيجب على المتصفح استدعاء نسخة من Microsoft Excel لعرض الصفحة. تحدد خوادم الويب أنواع الملفات عن طريق تعيين امتداد الملف إلى جدول نوع MIME.
يمكنك استخدام خاصية ContentType الخاصة بكائن الاستجابة لتعيين سلسلة نوع محتوى HTTP للمحتوى المرسل إلى المستخدم. على سبيل المثال، يقوم الأمر التالي بتعيين نوع المحتوى لتعريف القناة:
<% Response.ContentType = "application/x-cdf" %>
لمزيد من المعلومات حول القنوات، راجع "إنشاء قنوات ديناميكية" في هذا الموضوع.
أنواع المحتوى الشائعة الأخرى هي النص/العادي (الذي يتم إرجاعه كمحتوى نصي بدلاً من عبارات HTML المفسرة)، والنص/gif (لصور GIF)، والفيديو/quicktime (للأفلام بتنسيق Apple QuickTime®). تم تعريف مجموعة قياسية من أنواع MIME وهي مدعومة إما بواسطة خادم ويب أو مستعرض ويب. لمعرفة أنواع المحتوى التي يدعمها خادم Microsoft Web، استخدم Internet Services Manager لفتح صفحة خصائص موقع الويب الخاص بك، وانقر فوق علامة التبويب رؤوس HTTP، ثم انقر فوق علامة التبويب أنواع الملفات.
إعادة توجيه المتصفح استخدم أسلوب إعادة التوجيه لإعادة توجيه المتصفح إلى عنوان URL آخر بدلاً من إرسال المحتوى إلى المستخدم. على سبيل المثال، إذا كنت تريد التأكد من أن المستخدمين قد أدخلوا طلبك من الصفحة الرئيسية حتى يتمكنوا من الحصول على معرف العميل، فيمكنك التحقق مما إذا كان لديهم رقم معرف العميل، وإذا لم يكن الأمر كذلك، فيمكنك إعادة توجيههم إلى الصفحة الرئيسية.
<%
إذا كانت الجلسة ("معرف العميل") = 0 إذن
الاستجابة.إعادة توجيه "homepage.asp"
نهاية إذا
%>
ما لم يكن المخزن المؤقت مفتوحًا بالفعل، يجب عليك إعادة توجيه المتصفح قبل إرجاع أي محتوى أو رؤوس إلى المتصفح. يؤدي وضع عبارة Response.Redirect في أعلى الصفحة وقبل علامة <HTML> إلى ضمان عدم إرجاع أي محتوى إلى المتصفح. إذا كنت تستخدم Response.Redirect بعد إرجاع المحتوى أو الرؤوس إلى المتصفح، فستظهر لك رسالة خطأ.
إذا كنت تستخدم Response.Redirect في منتصف الصفحة، فاستخدمه مع خاصية Response.Buffer، كما هو موضح في القسم التالي.
المحتوى المخزن افتراضيًا، يقوم خادم الويب بإرجاع نتائج معالجة HTML والبرامج النصية عند معالجة صفحات ASP. ومع ذلك، يمكنك تعيين خاصية Buffer لكائن الاستجابة لمعالجة جميع أوامر البرنامج النصي للخادم على الصفحة قبل إرسال أي شيء إلى المستخدم.
يمكنك استخدام تقنيات التخزين المؤقت لتحديد نقطة في عملية معالجة الصفحة لا تريد إرسال المحتوى قبل تلك النقطة إلى المستخدم. يمكنك أيضًا استخدام طريقة إعادة التوجيه لكائن الاستجابة لإعادة توجيه المستخدم إلى صفحة أخرى، أو استخدام طريقة Clear لكائن الاستجابة لمسح المخزن المؤقت وإرسال محتوى مختلف إلى المستخدم. يستخدم المثال أدناه كلا الطريقتين.
<%
"قم بتشغيل التخزين المؤقت. يجب أن يظهر هذا البيان قبل علامة <HTML>."
Response.Buffer = صحيح %>
<أتش تي أم أل>
<الجسم>
.
.
.
<%
إذا كان الطلب ("FName") = "" إذن
الاستجابة.واضحة
الاستجابة.إعادة التوجيه "/samples/test.html"
آخر
استجابة. طلب الكتابة ("FName")
نهاية إذا
%>
</الجسم>
</html>
يمكنك أيضًا استخدام Response.Buffer لمنع خادم الويب من إرجاع رؤوس HTTP قبل أن يقوم البرنامج النصي بتعديلها. تقوم بعض الخصائص والأساليب، مثل Response.Expires وResponse.Redirect، بتعديل رؤوس HTTP.
عندما يتم تعيين خاصية Buffer في برنامج نصي ولا يتم استدعاء أسلوب Flush، سيحتفظ الخادم بطلبات Keep-Alive الصادرة عن المستخدم. يمكن أن يساعد تطوير عادة البرمجة النصية هذه في تحسين أداء الخادم لأنه لا يتعين على الخادم إنشاء اتصال جديد لكل طلب مستخدم (بافتراض أن الخادم والمستخدم وأي خوادم وكيلة تدعم متطلبات Keep-Alive). ومع ذلك، أحد العيوب المحتملة لهذا الأسلوب هو أن المخزن المؤقت لا يعرض أي استجابة للمستخدم حتى يقوم بمعالجة كافة البرامج النصية في ملف ASP الحالي. بالنسبة للنصوص البرمجية الأطول والأكثر تعقيدًا، قد يضطر المستخدمون إلى الانتظار لفترة طويلة قبل رؤية هذه الصفحة.
بشكل افتراضي، يتم إيقاف تشغيل التخزين المؤقت لتطبيقات ASP. يمكنك استخدام Internet Services Manager لتشغيل المخازن المؤقتة لتطبيق ASP بأكمله.
يسمح للخوادم الوكيلة بتخزين الصفحات مؤقتًا من خلال الخادم الوكيل، يمكن للتطبيقات إرسال الصفحات إلى المستخدمين. يطلب الخادم الوكيل صفحات ويب من موقع ويب نيابةً عن متصفح المستخدم. تقوم الخوادم الوكيلة بتخزين صفحات HTML مؤقتًا بحيث يمكن إرجاع الطلبات المتكررة لنفس الصفحة إلى المتصفح بسرعة وكفاءة. تقوم الخوادم الوكيلة بتنفيذ الطلبات وتخزين صفحات الويب مؤقتًا، وتخفيف الحمل على الشبكة وخوادم الويب.
على الرغم من أن التخزين المؤقت يعمل بشكل جيد مع صفحات HTML، إلا أنه لا يعمل بشكل جيد مع صفحات ASP التي تحتوي على معلومات تم إنشاؤها ديناميكيًا. على سبيل المثال، يتطلب الإبلاغ عن ظروف سوق الأوراق المالية أو قوائم المخزون التي تظهر كميات كبيرة من الأعمال معلومات فورية. المعلومات التي تم الحصول عليها قبل ساعة غير دقيقة للغاية في الوقت الحالي. إذا قام التطبيق بإرجاع معلومات شخصية، على سبيل المثال، صفحة رئيسية مخصصة، فمن المتوقع ألا يتمكن المستخدم من رؤية المعلومات الشخصية لمستخدم آخر.
افتراضيًا، لا يمكن لخادم ASP Command Proxy نفسه تخزين صفحات ASP مؤقتًا (على الرغم من أنه يقوم بتخزين الصور والصور النقطية والتطبيقات الصغيرة والمراجع الأخرى مؤقتًا على الصفحات المخزنة مؤقتًا). يمكنك استخدام خاصية Response.CacheControl لتعيين حقل رأس HTTP للتحكم في ذاكرة التخزين المؤقت للسماح بالتخزين المؤقت لصفحة معينة. القيمة الافتراضية لـ Response.CacheControl هي السلسلة "خاص"، والتي تمنع الخوادم الوكيلة من تخزين هذه الصفحة مؤقتًا. للسماح بالتخزين المؤقت، قم بتعيين حقل رأس التحكم في ذاكرة التخزين المؤقت إلى عام:
<% Response.CacheControl = "عام" %>
نظرًا لأنه يجب إرسال رؤوس HTTP إلى المستعرض أو الخادم الوكيل قبل إرسال أي محتوى صفحة، فيمكنك تعيين خاصية Response.CacheControl أو استخدام Response.Buffer لتخزين الصفحة مؤقتًا قبل أي علامات HTML.
يعد حقل رأس التحكم في ذاكرة التخزين المؤقت جزءًا من مواصفات HTTP 1.1. لا يمكن تخزين صفحات ASP مؤقتًا على الخوادم الوكيلة التي تدعم HTTP 1.0 فقط لأنه لا يتم إرسال حقول رأس منتهية الصلاحية.
منع المتصفحات من تخزين الصفحات مؤقتًا. يحتوي كل إصدار من إصدارات المتصفح على مواصفاته الخاصة فيما يتعلق بتخزين الصفحات مؤقتًا. لمنع المتصفح من تخزين صفحات ASP مؤقتًا، استخدم Response.Expires لتعيين رأس انتهاء الصلاحية:
<% الاستجابة.انتهاء الصلاحية = 0%>
القيمة 0 تفرض انتهاء صلاحية الصفحات المخزنة مؤقتًا. نظرًا لأنه يجب إرسال رؤوس HTTP إلى المستعرض قبل إرسال أي صفحة، فيمكن تخزين الصفحة مؤقتًا عن طريق وضع سمة Response.Expires قبل علامة HTML أو باستخدام Response.Buffer.
إنشاء قنوات ديناميكية
يحتوي Internet Explorer 4.0 على ميزة جديدة يمكن لمخططي الويب استخدامها لدمج صفحات الويب ذات السمات المشتركة في قناة واحدة. في المتصفح، يتم عرض القناة على شريط عنوان القناة، ويمكن للمستخدمين الوصول إلى القناة من خلال النقر على الأيقونة. يتم تحديث القنوات تلقائيًا في الخلفية، ولا يتعين على المستخدمين زيارة الموقع لتنزيل أحدث الصفحات في متصفحهم. توفر القنوات للمستخدمين مسارًا سريعًا ومباشرًا لاستعراض مجموعة من صفحات الويب ذات الصلة، ويتم تحديث صفحات الويب هذه تلقائيًا.
باستخدام ASP، يمكنك كتابة البرامج النصية لتجميع تفضيلات المستخدم ثم إنشاء القنوات ديناميكيًا. يحدد ملف تعريف القناة (.cdf) تنظيم محتوى القناة وتسلسله. تستخدم الأوامر الموجودة في ملفات .cdf نفس بناء جملة علامات HTML، مما يسهل فهمها وإنشاءها من البرامج النصية. عند كتابة برنامج نصي ASP لإنشاء ملف تعريف قناة، يستخدم البرنامج النصي ملحق .cdx. عندما يقرأ ASP ملفًا بامتداد .cdx، يتم إرسال نوع محتوى التطبيق/x-cdf تلقائيًا، والذي يخبر المتصفح باستخدام تعريف القناة لتفسير البايتات. إذا كنت لا تستخدم .cdx كملحق، فيجب على البرنامج النصي تعيين نوع المحتوى يدويًا إلى application/x-cdf باستخدام Response.ContentType.
فيما يلي مثال لكيفية استخدام القنوات. يطلب نموذج HTML التالي من المستخدم تحديد قناة. عند الإرسال، يستدعي النموذج برنامجًا نصيًا في ملف .cdx لإنشاء تعريف القناة.
<P> اختر القنوات التي تريدها </P>
<طريقة النموذج = "POST" ACTION = "chan.cdx">
<P><INPUT TYPE=اسم مربع الاختيار=أفلام> الأفلام
<P><INPUT TYPE=CHECKBOX NAME=Sports> رياضة
<P><INPUT TYPE="SUBMIT" VALUE="SUBMIT">
</فورم>
يقوم البرنامج النصي في Chan.cdx بإنشاء تعريف للقناة بناءً على قيم الجدول المقدم مع الطلب.
<% إذا Request.Form("أفلام") <> "" ثم %>
<القناة>
بيانات تعريف القناة لصفحات الفيلم
</القناة>
<% نهاية إذا %>
<% إذا Request.Form("Sports") <> "" ثم %>
<القناة>
بيانات تعريف القناة للصفحات الرياضية
</القناة>
<% نهاية إذا %>
إرسال الملفات إلى خادم يمكن للمتصفح استخدام تطبيق Posting Acceptor لإرسال الملفات إلى خادم ويب. عندما يقوم متقبل النشر بتحميل الملفات، فإنه يرسل حقول نموذج مشفرة بعنوان URL تسرد اسم وموقع كل ملف مستلم. يمكن إضافة عنوان URL للمعالجة البريدية إلى برنامج نصي يقوم بتحميل الملف لاستدعاء البرنامج النصي ASP لمعالجة أسماء الحقول هذه. على سبيل المثال، يمكنك كتابة برنامج نصي يقوم تلقائيًا بإرسال بريد إلكتروني إلى مسؤول النظام يتضمن اسم الملف وموقعه.