الموصى به: يقوم ASP بتنفيذ الإرسال التلقائي لرسائل البريد الإلكتروني إذا كانت صفحات الويب غير الموجودة عندما نقوم بإنشاء موقع ويب ، عادة ما يكون لدينا بعض الأخطاء في تصرفات الزوار أو عيوبها في موقعنا ، مما تسبب في زيارة صفحة غير موجودة. في هذا الوقت ، ستظهر رسالة خطأ 404. إذا كنت زائرًا متحمسًا ، فيمكنك إرسال بريد إلكتروني إليك لتذكيرك. في ذلك الوقت ، معظم الناس
يعرف أي شخص كتب ASP أكبر قليلاً أن الجلسة مفيدة حقًا. يمكن استخدامه لتسجيل متغيرات البيانات المملوكة للمستخدم ، والتي هي آمنة ومريحة. ولكن هل تعرف حقًا كيف تعمل الجلسة؟ ربما بعد أن تفهم ، لن تجرؤ أبدًا على استخدام هذا الكائن الكراهية مرة أخرى. على الرغم من أن طريقة التغيير إلى البدائل مزعجة بعض الشيء ، بعد الاعتبارات طويلة الأجل ، يجب أن أفعل ذلك.
أولاً ، دعنا نتحدث عن فوائد الجلسة ، والتي يمكن استخدامها لتسجيل متغيرات البيانات المملوكة ملكية خاصة من قبل العميل ولن تختفي خلال النطاق الزمني. هذه حقًا وظيفة مهمة ، خاصة تلك التي يجب أن تستخدمها الأنظمة التي تحتوي على الأعضاء. على سبيل المثال ، فإن حساب تسجيل الدخول للعضو ، والوقت ، والعديد من البيانات في الوقت الفعلي المسجلة في هذا السجل ، مثل نظام التسوق يسجل المنتجات في سلة التسوق للمستخدم. هناك حاجة ماسة إلى هذه المعلومات من قبل كل مستخدم ، وعادة ما يستخدم المطور سجلات الجلسة لمعالجتها.
ومع ذلك ، تتكون الجلسة في ASP من ملفات تعريف الارتباط ، ويقوم الخادم بنقل جميع المعلومات المسجلة في الجلسة إلى متصفح المستخدم في شكل ملفات تعريف الارتباط. عادة ، ستوفر المتصفحات ملفات تعريف الارتباط هذه. عندما ينقر المستخدم على الرابط ويقوم بتوصيله بالخادم مرة أخرى ، سيقوم المتصفح بتمرير ملفات تعريف الارتباط هذه إلى الخادم للمعالجة. هذا هو مبدأ التشغيل للجلسة. عندما تكون كمية البيانات أكبر ، يجب نقلها وجمعها. لا يستهلك النطاق الترددي للخط فحسب ، بل يقلل أيضًا من أدائه ، لأن الخادم يجب أن ينفق المزيد من الموارد على الإجراءات الأولية مثل المعالجة عبر الإنترنت وإعادة تكوين الذاكرة. قد تفكر الآن ، "يجب أن أستخدم هذه الوظيفة ، لذلك يجب أن أضحي قليلاً". ومع ذلك ، يتحدث هذا المقال عن الجلسة. من ناحية ، هو تعليم الجميع استخدام أقل ؛ من ناحية أخرى ، هناك بالطبع بدائل. ثم الشخص الذي يأتي على المسرح هو كائن التطبيق الذي ينتمي إلى Global.asa.
التطبيق هو أيضا جيد في تسجيل ومعالجة البيانات المؤقتة. إن قدراتها واستخدامها في جميع الجوانب هي نفس الجلسة ، ولكن بالمقارنة ، فإن البيانات التي يسجلها عامة ، أي مساحة متغيرة يمكن لأي مستخدم مشاركتها. التطبيق ليس مثل الجلسة ، التي لا تمرر البيانات إلى المستخدم وانتظر في المرة القادمة لقراءتها مرة أخرى عبر الإنترنت. يتم تسجيله مباشرة في الذاكرة على الخادم ، والأداء أسرع بكثير من الجلسة.
نظرًا لأن كائنات التطبيق عامة ، فإن أول ما يجب القيام به هو التخطيط لمنطقة مشتركة لكل مستخدم ، بحيث يكون لكل مستخدم مجاله الخاص لتسجيل البيانات لتحقيق غرض جلسة المحاكاة. هناك طريقتان للقيام بذلك الآن:
1. تهيئة وتخصيص مساحة ذاكرة المستخدم مقدمًا عند تنشيط الخادم. عادة ، على الرغم من أن هذا النهج يشغل الكثير من الموارد بمجرد أن يتم تشغيل الخادم ، إلا أنه يوفر أيضًا مشكلة في التخصيص في كل مرة يكون فيها المستخدم متصلاً بالإنترنت. ومع ذلك ، هناك قيود. يجب أن يحد استخدام هذه الطريقة من الحد الأقصى لعدد الأشخاص. نظرًا لأنه يتم تهيئته بمجرد تنشيطه ، يمكننا فقط تقدير إنشاء مساحة معينة من الذاكرة ، لذلك عادةً ما يتم استخدام هذه الطريقة في البرامج الصغيرة مثل غرف الدردشة.
2. يجب اعتبار هذه الطريقة أكثر ملاءمة للتطبيقات الكبيرة. يتبنى طريقة تخصيص ديناميكية. فقط عندما يأتي المستخدم عبر الإنترنت إلى الخادم لأول مرة ، سيتم تخصيص المورد لهذا المستخدم. الغرض من هذين حللين للجلسة المحاكاة هو تقليل استهلاك موارد الجلسة ، ولكن بعد كل شيء ، لا يزال لا يمكن الاستغناء عنه. ما زلنا بحاجة إلى استخدام جلسة صغيرة ، والتي يمكن أن تقلل على الأقل الكثير من العبء على الخادم.
■ الخطة الأولى
أولاً نبدأ تنفيذ الحل الأول. نظرًا لأنه يجب تهيئة التطبيق عند تنشيطه ، يجب أن نبدأ بالطبع من Global.asa:
تم الانتهاء من التهيئة ، ولكن كيفية استخدامه؟ نحتاج فقط إلى تغيير المعلومات المخزنة باستخدام الجلسة ، مثل الحساب ووقت تسجيل الدخول ، إلى كائن التطبيق الذي أنشأناه ، حيث يقوم المستخدم بتسجيل الدخول:
| ما يلي هو المحتوى المقتبس: البحث عن مساحة غير مستخدمة ل I = 1 للتطبيق (ClientMax) إذا كان التطبيق (user_status_ & i) = 0 ثم رقم المستخدم المؤقت جلسة (فهرس) = i قفل application application.lock "ضبط على الحالة المستخدمة التطبيق (user_status_ & i) = 1 'وضع في بيانات متغيرة التطبيق (user_account_ & i) = حساب التطبيق (user_logtime_ & i) = الآن () "فتح application.unlock الخروج ل إنهاء إذا التالي |
للحصول على البيانات المتغيرة ذات الصلة للمستخدم ، يشبه ما يلي:
reponse.write (Application (user_account_ & session (index))
قد تجد أنك لا تعني عدم استخدام الجلسة؟ إذن لماذا توجد الجلسة في الكود الأصلي أعلاه؟ كما ذكرنا سابقًا ، لا يمكن لهذا البديل استبدال الجلسة بالكامل. المتصفح ليس دائمًا متصلًا بالخادم. سيتم فصله بعد قراءة الصفحة. فكيف نعرف ما إذا كان الشخص نفسه متصل بالإنترنت في المرة القادمة؟ في هذا الوقت ، علينا أن نعتمد على الجلسة. نعطي المستخدم مجموعة من الأرقام في الوقت الفعلي. هذا الرقم هو رقم المستخدم في المساحة المتغيرة على التطبيق. يمكنك أن تتخيل أن هناك العديد من الخزائن في البنك. لديك مفتاح ، والمفتاح لديه رقم. يتيح الرقم الموجود على المفتاح للمشغل أن يقودك إلى أمانك. تحتوي هذه الطريقة على بعض التحسينات ، لكنها تكفي للتطبيقات الصغيرة.
■ الخطة الثانية
فيما يتعلق بالحل السابق ، قد تعتقد أيضًا أن رقمنا المخصص يستخدم جلسة للتسجيل. بالحديث عن الترقيم ، يوفر كائن الجلسة طريقة "SessionId". هذا صحيح ، بغض النظر عما إذا كنا نريد استخدامه أم لا ، سيساعد الخادم تلقائيًا كل مستخدم في تعيين رقم ، ولن يتكرر هذا الرقم. بالنسبة لهذا الرقم ، يتم الحصول عليه مع Session.SessionId. هذا الترقيم هو إجراء ستفعله الجلسة بالتأكيد ، حتى نتمكن من استخدامه لاستبدال برنامج الترقيم الذي نكتبه بأنفسنا ، والذي يوفر جهدًا آخر وحتى لديه توسع أكبر. ولكن في الأساس ، لا يزال الحل الأول أعلاه مفيدًا ، مثل غرف الدردشة التي تحد من عدد الأشخاص والتطبيقات الصغيرة الأخرى. البديل الثاني التالي هو للأنظمة الأكبر.
إذا كان موقع ويب به مئات أو آلاف أو حتى عشرات الآلاف من الأشخاص على موقع ويب كل ثانية ، فلن يعمل بالتأكيد إذا كان يستخدم الحل السابق. لنفترض أنك حددت الحد الأعلى البالغ 10000 شخص ، بمجرد تنشيط الخادم ، سيساعدك ذلك على قطع 10000 منطقة للتحضير لـ 10000 مستخدم. إذا كان هناك 5 متغيرات في منطقة ما ، فإن أحد المتغيرات يمثل 32 بايت (بايت) ، و 10،000 حساب لأكثر من 320،000 كيلو بايت (320 ميغابايت) ، وبمجرد تنشيط الخادم ، فإنه سيحسم الكثير من القمامة في الذاكرة ، وسيتم تقليل أدائها كثيرًا قبل أن يذهب إلى ساحة المعركة. وعلى الرغم من أن هذه الأرقام قليلة جدًا ، أعتقد أن 512 ميجابايت من نفسك ستكون كافية ، يُفترض أن الرقم أعلاه هو رقم أدنى ، ومن غير المعروف عدد الموارد التي سيستخدمها الخادم عند تكوين الذاكرة ، لذلك سيكون أكثر وليست أقل. لذلك ، يتمثل الحل في تكوين مساحة متغير المستخدم بشكل حيوي ، وقطع قطعة من المساحة عندما يكون المستخدم متصلاً بالخادم ، لذلك ليست هناك حاجة لتكوين ذاكرة ضخمة مقدمًا.
الحل الثاني بسيط نسبيا. يرجى التخلص من كل الأشياء في الحل الأول. لا نحتاج إلى الانتقال إلى Global.asa ، نحتاج فقط إلى تغيير تسجيل الدخول إلى المستخدم والأماكن المفيدة الأخرى:
| ما يلي هو المحتوى المقتبس: قفل ApplicationApplication.lock 'وضع البيانات المتغيرة التطبيق (user_account_ & session.sessionid) = حساب التطبيق (user_logtime_ & session.sessionid) = الآن () "إلغاء تأمين Application.unlock |
للحصول على البيانات المتغيرة ذات الصلة للمستخدم ، يشبه ما يلي:
Response.write (Application (user_account_ & session.sessionid))
في الماضي ، قرأت العديد من الكتب التي ذكرت أن الجلسة كان من الصعب للغاية تناول الموارد ، لذلك حاول ألا تستخدمها ، لكن لا يزال يتعين علي استخدامها عندما يتعين عليهم ذلك ، ولم يعلم الكتب حلًا أكثر ملاءمة. الآن عندما تفهم كيفية استبدال الجلسة ، استخدمها جيدًا! ربما يمكن تحسين مشاكل الكفاءة التي تكون مضطربة دائمًا كثيرًا!
مشاركة: اكتب برنامجًا منبثقًا أكثر سهولة في الاستخدام مع ASP مثال ASP: استخدم ASP لكتابة برنامج منبثق أكثر سهولة في الاستخدام لمساعدتنا على إنشاء طريقة تحقيق غير مملوءة. يعتبر استخدام Windows المنبثق لعرض الاستبيانات الطريقة الأكثر ملاءمة وسريعة لجمع معلومات المستخدم. بعد إنتاج الاستبيان الأول