1. نظرة عامة
في تطبيقات الويب، قد يستغرق إنشاء بعض التقارير وقتًا طويلاً لحساب قاعدة البيانات؛ وتوفر بعض مواقع الويب معلومات عن الطقس، الأمر الذي يتطلب الوصول إلى خادم بعيد لإجراء اتصال SOAP للحصول على معلومات درجة الحرارة. كل هذه أمثلة على المعلومات المعقدة. قد تؤدي إضافة الكثير من المعلومات المعقدة إلى صفحة ويب إلى زيادة التحميل على خادم الويب وخادم قاعدة البيانات. jsp (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) يوفر التخزين المؤقت لكتل التعليمات البرمجية للمطورين حرية إضافة معلومات معقدة متنوعة حسب الرغبة.
يمكن لـ jsp (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) تغليف وتشغيل كود Java المعقد في مكتبة العلامات، مما يجعل jsp (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) تعد الملفات أسهل في الصيانة، مما يجعلها أكثر ملاءمة للمطورين غير المحترفين لاستخدام jsp (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) (الخيار الأول لتطبيقات SUN على مستوى المؤسسة- تطبيقات المستوى) ملفات الصفحة. يوجد بالفعل العديد من مكتبات العلامات، والتي تكون إما منتجات تجارية أو منتجات مفتوحة المصدر. لكن معظم هذه المنتجات تستخدم مكتبات العلامات فقط لتنفيذ الوظائف التي يمكن تنفيذها باستخدام Java Scriptlet بسيط. يستخدم عدد قليل من المنتجات علامات مخصصة بطريقة إبداعية لتوفير الخيار الأول (تطبيقات SUN على مستوى المؤسسة). تطبيقات SUN على مستوى المؤسسة) كان من المستحيل تقريبًا تحقيق مكتبة العلامات المخصصة من قبل.
تم تصميم مكتبة علامات OSCache بواسطة OpenSymphony وهي تطبيق علامة مخصصة مبتكر jsp (الخيار الأول لتطبيق SUN على مستوى المؤسسة) (الخيار الأول لتطبيق SUN على مستوى المؤسسة) يوفر القدرة على استخدام jsp الحالي (الأول لتطبيق SUN على مستوى المؤسسة). الاختيار) (الخيار الأول لتطبيقات SUN على مستوى المؤسسة) يحقق وظيفة التخزين المؤقت السريع للذاكرة داخل الصفحة. على الرغم من وجود عدد قليل من البائعين الذين يقدمون منتجات التخزين المؤقت بأشكال مختلفة، إلا أنهم جميعًا منتجات خاصة بالبائعين. يمكن تشغيل OSCache على أي خادم jsp (الخيار الأول لتطبيق SUN على مستوى المؤسسة) (الخيار الأول لتطبيق SUN على مستوى المؤسسة) 1.1 خادم متوافق، ولا يمكنه فقط تخزين jsp الموجود (الخيار الأول لتطبيق SUN على مستوى المؤسسة) (تطبيق SUN على مستوى المؤسسة ) لجميع المستخدمين، الخيار الأول للتطبيقات)، ويمكن تخزينها مؤقتًا على أساس كل مستخدم. يتضمن OSCache أيضًا بعض الميزات المتقدمة لتحسين قابلية التوسع، مثل التخزين المؤقت على القرص، ومسح المخزن المؤقت القابل للبرمجة، والتحكم في الاستثناءات، وما إلى ذلك. بالإضافة إلى ذلك، مثل منتجات OpenSymphony الأخرى، يتم توزيع كود OSCache مجانًا بموجب ترخيص مفتوح المصدر.
تأخذ هذه المقالة عملية تصميم موقع مزاد وهمي كمثال لتقديم عملية عمل OSCache. سيتضمن موقع الويب الخيالي هذا ما يلي: صفحة إدارة تعرض أنشطة المزاد الأخيرة، وصفحة رئيسية كاملة الوظائف تحتوي على معلومات ترويجية متنوعة، وشريط تنقل خاص يحتوي على معلومات حول جميع أنشطة المزاد غير المستقرة للمستخدم.
2. صفحة الإدارة
يحتوي موقع المزاد على تقرير الإدارة، ويستغرق خادم قاعدة البيانات عدة ثوانٍ لإنشاء مثل هذا التقرير. من المهم أن يستغرق إنشاء التقرير وقتًا طويلاً، لأنه قد يكون لدينا العديد من المسؤولين الذين يراقبون تشغيل النظام، ونريد تجنب إعادة إنشاء التقرير في كل مرة يقوم فيها المسؤول بزيارة الموقع. ولتحقيق ذلك، سنقوم بتغليف الصفحة بأكملها في علامة مخزن مؤقت على مستوى التطبيق يتم تحديثها كل ساعة. تتمتع بعض المنتجات من البائعين الآخرين بوظائف مماثلة، لكن OSCache يقوم بها بشكل أفضل منهم.
ومن أجل التبسيط، لن نركز كثيرًا على مشكلات التنسيق. عند كتابة صفحة الإدارة، نضيف أولاً إعلان مكتبة العلامات إلى الصفحة:
<%@ taglib uri="cachetags" prefix="cache" %>
بعد ذلك يتعين علينا إحاطة الصفحة بأكملها بعلامات ذاكرة التخزين المؤقت. وقت التخزين المؤقت الافتراضي لعلامات التخزين المؤقت هو ساعة واحدة.
<cache:cache> .... تقارير الإدارة المعقدة.... </cache:cache>
تم الآن تخزين صفحة الإدارة مؤقتًا. إذا قام المسؤول بالوصول إلى نفس الصفحة مرة أخرى خلال ساعة بعد إنشاء الصفحة، فسوف يرى الصفحة المخزنة مؤقتًا مسبقًا، وليست هناك حاجة إلى أن يقوم خادم قاعدة البيانات بإنشاء هذا التقرير مرة أخرى.
3. الصفحة الرئيسية
تعرض الصفحة الرئيسية لموقع المزاد أنشطة الموقع وتروج للمزادات التي على وشك الانتهاء. نريد عرض عدد المزادات الجارية، وعدد المستخدمين المسجلين حاليًا، وقائمة المزادات التي من المقرر أن تنتهي في المستقبل القريب، والوقت الحالي. تحتوي هذه الرسائل على متطلبات دقة زمنية مختلفة. تستمر المزادات على الموقع الإلكتروني عادةً لعدة أيام، لذا يمكننا ضبط الوقت لتقليل عدد المزادات الصالحة إلى 6 ساعات. من الواضح أن عدد المستخدمين سيتغير بشكل متكرر، ولكن هنا سنقوم بتخزين هذه القيمة لمدة 15 دقيقة في المرة الواحدة. وأخيرًا، نريد أن يكون الوقت الحالي المعروض على الصفحة دائمًا هو الوقت المحدد للوصول إلى الصفحة.
بعد الإعلان عن مكتبة العلامات في الصفحة الرئيسية، نقوم أولاً بإخراج التاريخ الحالي مباشرة دون تخزين مؤقت:
الآن هو: <%=new java.util.Date()%>
بعد ذلك، نريد عرض قائمة بتلك التي ستقام مزادات تنتهي على المدى القصير:
<cache:cache> <ul> <% // إنشاء مكرر يحتوي على أحدث المزادات Iterator Auctions = .... while (auctions.hasMore()) { Auction Auction = (Auction) Auctions .next(); %><li><%=auction%></li%< } %> </ul> </cache:cache>