باستخدام النص المتشعب التحقق من صحة

النهج الأفضل هو استخدام نموذج التحقق من صحة النص المتشعب. هذا النموذج يرسل استجابة مع كل تذكرة والتي تشير إلى الطابع الفريد للبيانات. إذا كان العميل يريد تحميل المحتوى مرة أخرى ، يرسل العميل والخادم تذكرة من تنزيل الماضي. الخادم يقارن تذكرة إرسالها مع تذكرة أنه ، وإذا كان خادم إشعارات التذاكر متطابقة ، فهو يرسل النص المتشعب 304 تشير إلى أي تغييرات قد حدثت. عند هذه النقطة ، يمكن للعميل استرداد محتوى القديمة من ذاكرة التخزين المؤقت وتقديمها للمستخدم كما أحدث وأكبر. والمتشعب التحقق من صحة النموذج لا يزال يتطلب وجود طلب المتشعب ، ولكنها لا تشمل تكلفة توليد وإرسال المحتوى مرة أخرى. أما من حيث محادثة المتشعب ، والتحقق من صحة النص المتشعب هو نموذج تنفذ على النحو التالي. يوضح هذا المثال طلب من عميل و واستجابة من الملقم.

 طلب 1الحصول على / ajax/chap04/cachedpage.html HTTP/1.1 قبول : * / * تقبل اللغة : اون كاليفورنيا قبول ترميز : gzip ، يدحض وكيل المستخدم : Mozilla/4.0 (متوافق ؛ [مس] 6.0 ؛ الإقليم الشمالي ويندوز 5.1 ؛ SV1 ؛ . CLR صافي 2.0.50215) المضيف : 127.0.0.1:8081 اتصال : ابق على قيد الحياة استجابة 1HTTP/1.1 200 إيتاغ موافق : واط / "45-1123668584000" في آخر لمعدلة : الأربعاء ، 10 أغسطس 2005 10:09:44 بتوقيت جرينتش المحتويات النوع : نص / محتوى أتش تي أم أل - المدة : 45 التاريخ : الأربعاء ، 10 أغسطس 2005 10 : 11:54 بتوقيت جرينتش الخادم : Apache-Coyote/1.1  محتويات المخزن 
  

العميل يجعل طلب وثيقة / ajax/chap04/cachedpage.html. يستجيب الملقم مع المحتوى ، ولكن ليس هناك مخبأ ، أو التحكم الإنتهاء المعرف. ويبدو أن هذا يشير إلى أن محتوى عاد لا يتم مؤقتا ، ولكن هذا ليس صحيحا. الملقم قد أشار الى انه باستخدام نموذج التحقق من صحة النص المتشعب ، وليس النموذج انقضاء المتشعب. في الصفحة التي يتم إرجاعها قد أصبحت جزءا من ذاكرة التخزين المؤقت التي حددتها المعرف الفريد إيتاغ. المعرف إيتاغ ، ودعا إلى سمة الكيانويمكن مقارنة رمز فريد للتجزئة صفحة أتش تي أم أل. هذه الرسالة هي أن جورج مسبوقة للكيان سمة المعرف يعني أن الصفحة إشارة ضعيفة وخادم المتشعب قد لا يعكس على الفور إلى صفحة التحديثات على جانب الملقم. والخطوة التالية هي لتحديث المتصفح ونسأل لنفس الصفحة مرة أخرى. الحديث المتشعب هو كما يلي.

 طلب 2الحصول على / ajax/chap04/cachedpage.html HTTP/1.1 قبول : * / * تقبل اللغة : اون كاليفورنيا قبول ترميز : gzip ، وإذا فرغ ، معدلة ، ومنذ : الأربعاء ، 10 أغسطس 2005 10:09:44 بتوقيت جرينتش إذا - لا شيء ماتش : واط / "45-1123668584000" عامل المستخدم : Mozilla/4.0 (متوافق ؛ [مس] 6.0 ؛ الإقليم الشمالي ويندوز 5.1 ؛ SV1 ؛. CLR صافي 2.0.50215) المضيف : 192.168.1.100:8081 اتصال : ابق على قيد الحياة رد 2HTTP/1.1 304 غير التعديل التاريخ : الأربعاء 10 أغسطس 2005 10:11:58 بتوقيت جرينتش الخادم : Apache-Coyote/1.1

عند العميل يجعل الطلب الثاني ، معرفات إضافية ، وإذا تم التعديل ، ومنذ وإذا - بلا ماتش يتم إرسالها في الطلب. لاحظ كيف إذا ، لا شيء ماتش المراجع المعرف المعرف من قبل إرسالها إيتاغ القيمة. خادم الاستفسارات عنوان الموقع ويقوم بإنشاء كيان العلامة. إذا كانت سمة الكيان مطابق لقيمة إرسالها ، الملقم بإرجاع المتشعب 304 رمز للإشارة إلى أن المضمون لم يتغير. كيان عند استخدام السمات ، يمكن للعميل إرسال إذا ماتش أو إذا - بلا ماتش. إذا يرسل العميل إذا ماتش ، والبيانات الموجودة على الخادم هو خارج التاريخ ، الملقم بإرجاع مخبأ تفوت الخطأ ، وليس البيانات الجديدة. إذا يرسل العميل ، إذا كان بلا ماتش المعرف عندما بيانات الخادم هو دون تغيير ، الملقم يرسل النص المتشعب 304 رمز العودة. إذا كانت البيانات قد عفا عليها الزمن ، يتم إرسال البيانات الجديدة.

والاستفادة من استخدام نموذج التحقق من صحة النص المتشعب من التخزين المؤقت هو أنك دائما مضمونة للحصول على أحدث نسخة في وقت الطلب. ويمكن للعملاء إجراء الطلب كل بضع ثواني ، ساعات ، أسابيع ، أو أيا كانت الفترة التي يختارونها. والأمر متروك للعميل ليقرر متى للحصول على نسخة جديدة من البيانات. منح ، لا يزال هناك بعض الحركة المتشعب بسبب الطلبات ، لكنها خفضت إلى aminimum. وبعد كل ذلك ، هناك حالات عند استخدام نموذج انقضاء المتشعب لا معنى على سبيل المثال ، عندما يكون محتوى أتش تي أم أل هو ثابت ونادرا ما يتغير . ويمكن أن المتشعب انتهاء النموذج ينبغي أن يستخدم في نموذج واحد طلب لتقليم الإدخالات من وحدة تحكم مخبأ عندما تصبح قديمة.

تنفيذ ذاكرة التخزين المؤقت عميل استخدام التحقق من صحة النص المتشعب ويمكن طلب العميل واحد مخبأ أن تمتد لتشمل التحقق من صحة استخدام المتشعب. ما هي التغييرات في نموذج التحقق من صحة النص المتشعب هو أن طلب البدنية التي ستكون دائما. من منظور الملاحة الفوقية ، وهذا قد يتسبب في تأخير الصغيرة نظرا لضرورة لتقديم طلب للتحقق من أن البيانات الحالية. ومع ذلك ، استجابة لطلب دورة سريعة الى حد ما ، حيث إن معظم الحالات نتيجة في "لم يتغير" الاستجابة ، والتنفيذ الكامل لاثنين من المهام المطلوبة لغير متزامن على النحو التالي.

 المصدر : / العميل / مخطوطات / jaxson / Common.js فار HttpValidationCacheController = (_Cache : صفيف الجديد () ، didNotFindETagError : وظيفة (رابط) ()) الدالة HTTPValProcessAndBreakBeforeRequest (xmlhttp ، طلب والإعدادات) (اذا (request.action == "الحصول على" ) (فار الكائنات = HttpValidationCacheController._cache [رابط] ، وإذا كان (الكائنات! = فارغة) ( this.xmlhttp.setRequestHeader ( "إذا ، لا شيء ماتش" ، obj.ETag) ؛ this.xmlhttp.setRequestHeader ( "Pragma" ، "لا مخبأ") ؛ this.xmlhttp.setRequestHeader ( "الكاش - التحكم" ، "لا مخبأ") ؛)) عودة كاذبة ؛) الدالة HTTPValProcessAndBreakAfterRequest (xmlhttp ، طلب والإعدادات) (اذا (xmlhttp.status == 200 & & request.action == "الحصول على") (اذا (xmlhttp.status == 200) ((محاولة فار foundetag = xmlhttp.getResponseHeader ( "إيتاغ") ؛ إذا (foundetag! = فارغة) (HttpValidationCacheController._cache [رابط] = ( إيتاغ : foundetag ،الحالة : xmlhttp.status ، StatusText : xmlhttp.statusText ، ResponseText : xmlhttp.responseText ، ResponseXML : xmlhttp.responseXML) ؛) والا (HttpValidationCacheController.didNotFindETagError (رابط) ؛)) الصيد (الاستثناء) (HttpValidationCacheController.didNotFindETagError (رابط) ؛) ) والا اذا (مركز == 304) (فار الكائنات = HttpValidationCacheController._cache [رابط] ، وإذا كان (الكائنات! = فارغة) (فار fakeXMLHttp = (المركز : 200 ، statusText : obj.StatusText ، responseText : obj.ResponseText ، responseXML : obj.ResponseXML ، محاولة) (settings.onComplete (fakeXMLHttp) ؛ العودة الحقيقية ؛) الصيد (ه) (globals.errorHandler (ه) ؛)) والا (رمي خطأ جديدا ( "خادم أشار إلى أن هذه البيانات في ذاكرة التخزين المؤقت") ؛))) عودة كاذبة ؛)

 

أتوقف لحظة لدراسة القانون. يجب أن نرى الكثير من التشابهات للعميل واحد طلب رمز التخزين المؤقت. الاختلافات الرئيسية التي تم إبرازها في جريئة. وهناك فارق كبير في الطلب HTTPValProcessAndBreakBeforeRequest هو إضافة رؤوس المتشعب التحقق من صحة تحديد إيتاغ لطلب سبق تنفيذها. لأن النص المتشعب باستخدام وسائل التحقق من صحة تنفيذ الطلب ، HTTPValProcessAndBreakBeforeRequest اضطر للعودة كاذبة في جميع الحالات.

وظيفة HTTPValProcessAndBreakAfterRequest أكثر تعقيدا لأن المنطق هو أكثر تعقيدا. إذا كان يستخدم التحقق من صحة النص المتشعب ويدعم الملقم التحقق من صحة النص المتشعب ، ثم الملقم يمكن أن تستجيب مع اثنين من رموز النص المتشعب لوضع كل طلب : 200 و 304. إذا كان رمز الحالة هو 200 ، فإما أن تكون البيانات قد تغيرت أو البيانات لم تتغير ابدا.

بغض النظر عن السبب وراء رمز الحالة 200 ، يحتاج البيانات إلى أن تضاف إلى مخبأ HttpValidationCacheController سبيل المثال. والفارق الوحيد بالنسبة لعميل واحد طلب مخبأ هو تخزين إضافية للإيتاغ. إذا كان رمز الحالة هو 304 ، ثم وهمية XMLHttpRequest سبيل المثال يتم إنشاؤها وطريقة settings.onComplete يسمى ، كما هو مبين في واحد مخبأ تنفيذ طلب العميل. تحديد وتنفيذ بقية عناوين المواقع والهندسة المعمارية وتنفيذ العميل من لواء " ما يجب القيام به "المنظور كاملة. لا نزال في حاجة لتغطية تفاصيل عناوين وبنية الخادم. عند هذه النقطة ، أريد أن أثبت لتذكيركم ، والفصل بين إرسال واستقبال البيانات مهم جدا لأن ذلك هو ما يجعل من الممكن للعميل لتقديم طلب اليوم وسوف نطلب الجواب غدا. إذا كان السؤال والجواب كان لا بد في سياق طلب واحد ، ثم العميل قد تضطر إلى الانتظار لوقت طويل جدا.

لوضع هذا في سياق آخر ، يمكنك أن تفكر في الانفصال ، واستجابة للطلب على أساس الفرق بين الذين يقفون في الطابور للحصول على المساعدة في متجر وتحديد عدد للحصول على المساعدة. تخيل التسوق وشراء بعض خصيصا بحجم قطعة من الخشب. كل متجر الخشب لديها استراتيجية خاصة لخدمة عملائها. استراتيجية واحدة هي أن يكون خط الزبائن حتى (طابور) ، والانتظار حتى يأتي دورها. ولكن ماذا لو كان الخط الطويل؟ وسوف يميل إلى أن يكون لك الحصول على الخط؟ ما إذا قررت الحصول على الخط ، وندرك أن عليك أن تذهب إلى الحمام ، أو كنت بحاجة إلى وضع بعض المال في عداد موقف السيارات؟ لحظة كنت خطوة للخروج من الخط ، وتفقد الموقف ويجب أن تبدأ لعبة الانتظار منذ البداية. طوابير من منظور الهندسة المعمارية هي مزعج لخادم لأن الخادم يحتاج إليها لإدارة الطلب والحفاظ على اهتمام اتصال العميل.

نهج آخر ، واحد هو أن أكثر عدلا ، هو أن كل زبون الذي يريد خاص قطعة من الخشب يختار عددا ويملأ في النظام. ولكي يتم إرسالها إلى مندوب مبيعات ، وانه أو انها سوف اقول لكم ما يقرب من الخشب عندما سوف تكون متاحة. خلال فترة الانتظار ، يمكنك الذهاب إلى الحمام ، لتناول طعام الغداء ، أو متجر لأشياء أخرى. من أجل نهج ورمزية يجعل من الممكن الفصل بين الزبون ينتظر من مخزن لتعظيم الوقت المستغرق لإعداد قطعة خاصة من الخشب. على سبيل المثال ، استنادا إلى مجموعة من الأوامر ، لا يمكن للتخزين في انتظار الأوامر على أساس الأولوية ، والقدرة ، والتعقيد ، وهذا الهيكل هي فريدة من نوعها لأنه يمكنك استخدام وظيفة النص المتشعب أن يقدم النظام ، وفي المقابل تتلقى إشارة من حيث رمز يمكن العثور على إجابة. ليس لديك لتوفير دلالة ، والتي قد تكون مصممة برمجيا. في حالة تطبيق شريط ، الموقع هو تحديد برمجيا.

 / pyservices / تاجر / التاريخية / آلة ل

يمثل هذا العنوان الجذرية التي تقبل المتشعب الوظائف والحصول عليها. المنفذة لحصول سيعود قائمة روابط لجميع النتائج المتاحة. النتائج قد تكون النتائج بالمعنى الخالص أو الحساب ، في حالة تطبيق شريط ، قائمة آلة ليجري مراقبتهم. الحصول على قائمة بجميع النتائج المتاحة لا طائل منه عندما كنت لا تعرف ما هي قائمة الوسائل. تطبيق شريط مع قائمتها من السهل فك لأن كل نتيجة يمثل شاهدوا شريط. ولكن ماذا لو كان عنوان جذر يمثل الحساب؟ القائمة المحتملة للنتائج عناوين قد تشمل الأرقام العشوائية المستخدمة في مؤشر على النتائج الفردية ، وهذا يوضح حقيقة أن من المهم للغاية أن تكون قادرة على التمييز بين النتائج استنادا الى بعض البيانات الوصفية. اذا كنت لا تستطيع أن تفعل ذلك ، أنت ذاهب الى تشغيل في مشاكل كبيرة.

في بعض الأحيان ، ومع ذلك ، كنت لا تريد أي واصفات البيانات الوصفية. إذا كانت وظيفة تنفيذ عملية حسابية ، حيث تكون النتيجة ذات مغزى إلا في سياق محدد ، فإنه تقع على عاتق العميل لتتبع الروابط. المتعلقة هذا المفهوم إلى سلة التسوق ، ومعظم المحلات لهم ، وليس هناك من واصف الفوقية. عندما كنت في محل ، يمكنك أن تعرف أي عربة ينتمي إليك استنادا إلى بنود في العربة. لا يوجد معرف للعربة ، وعلى حد قول الممثل الكوميدي البريطاني الكبير ، وقال "حتى تشتري محتويات سلة التسوق الخاصة بك ، وهو طريقة رائعة لإعادة ترتيب المواد الغذائية في متجر". أريد أن أشير إلى أن نعم ، يمكنك توليد النتائج دون الفوقية ، ولكن هذه الحالات هي المتخصصة (وسوف تكون مشمولة في المادة (7). عند تنفيذ وظيفة إلى رابط الجذرية ، وكنت بدأت مهمة على جانب الملقم. بدء المهام على ملقم المتشعب يمكن أن يكون تحديا لأن النص المتشعب ملقمات نتوقع من جميع تجهيز أن تكتمل عندما طلب الغايات. ومع ذلك ، ونظرا لطبيعة البيانات ، وهذا غير ممكن ، وبالتالي ، تقوم الحاجة إلى تمديد الخادم الخاص بك.

تمديد الخادم الخاص بك يمكن ان تكون بسيطة مثل خيط المنفذة لتشغيل المهمة ، أو أنها يمكن أن يعني إجراء مكالمة بين العمليات لتبدأ عملية لتشغيل المهمة. بغض النظر عن الكيفية التي سيتم تشغيل المهمة ، والجانب المهم هو أن يتم تشغيل هذه المهمة في سياق هذا الطلب. دور واشنطن بوست هو الجمع بين البيانات لمهمة ، ومن ثم تنفيذ مهمة. بعد تقديم الطلب تم تقديمه ، وينبغي أن الخادم العودة المعرف الذي يمثل المهمة. المعرف يمكن أن تكون البيانات الوصفية ، وبعض رقم عشوائي ، أو بعض ربط تعسفي. المعلومات التي تم إرجاعها ينبغي توفير بيانات كافية عن العميل لحسابيا إنشاء ارتباط الكامل إلى البيانات والبيانات الوصفية.

إذا كانت وظيفة لا توفر أي معلومات النظام ، وبعد ذلك فإن الافتراض هو أن العميل يعرف كيف يؤلف الفوقية وصلة من البيانات المقدمة. الجانب السلبي لهذه الاستراتيجية هو أنه إذا كان الخادم التغييرات الفوقية الجانب ، ورمز العميل سوف تحتاج إلى تحديث.

 / pyservices / تاجر / التاريخية / آلة ل/ ديل

هذا العنوان يمثل عنوان جذر نتيجة لذلك. فقط للحصول على النص المتشعب الأفعال وحذف معتمدة. الفعل من الوظائف قد تكون مدعومة اذا كنت ترغب في حساب نتيجة لهذا الطلب. الحرص على تنفيذ عملية إعادة الحساب هو أنه في الوضع متعددة ، فإن المستخدمين الآخرين مشاهدة البيانات الجديدة وليس أن ندرك أن بعض أجزاء من البيانات قد تغيرت. عموما ، فمن الأفضل أن تنظر إلى نتيجة ثابتة. إحضار الفعل معتمد لإتاحة إمكانية استرجاعها من نتائج. الفعل حذف معتمد لتقليم نتيجة لذلك من القائمة. والتقليم ضروري بحيث لا تصبح مخبأ تشوش مع النتائج القديمة التي لا معنى لها. في حالة تطبيق مؤشر ، من شأنه أن يحذف لا يكون مناسبا ، لأن التاريخ هو سلسلة شريط الوقت ، ويمكنك ان عقارب الساعة إلى الوراء. تشذيب سلسلة زمنية ملائمة إلا عندما يكون لديك بعض البيانات التي تعتبر قديمة وغير مناسبة للسياق.

 / pyservices/trader/historical/tickers/DELL/2006

هذا العنوان يمثل جزءا محددا من ونتيجة لذلك ، إذا كان ذلك مناسبا ، ينبغي أن تكون دائما معتمدة. أورلس دعم الأطفال في نتيجة يسمح رمز العميل لصقل هذه النتيجة.

/ pyservices / تاجر / التاريخية / آلة ل/ ديل؟ تصفية الآن =

هذا العنوان يمثل طريقة أخرى لضبط النتائج. على سبيل المثال ، إذا كان نتيجة لذلك يولد الكثير من البيانات ، وذلك باستخدام فلتر بقيمة الآن يمكن صقل النتيجة إلى 15 الماضية. صقل لا نخاطر النتائج في عداد المفقودين. على سبيل المثال ، يقول كنت تنتظر كل من نتائج عملية حسابية ، وذلك بصورة دورية دعوة لاسترداد النتائج ال 15 الماضية ، وما إذا كان الاختيار هو فترة ساعة واحدة ، وخلال ساعة واحدة و 30 النتائج يتم إنشاؤها؟ باستخدام مرشح لاسترداد يعني ال 15 الماضية سيكون لكم غاب عن 15 نتيجة يجب عدم استخدام مهمة النهج القائم عند استرداد الماضي 15 deletes1 للحفاظ على الاستقرار والقدرة على إعادة قراءة النتائج التي يمكن أن تضيع إذا ما توقفت عن تحميل المتصفح البيانات. تريد وسيلة لتنفيذ عملية الردم حيث مخبأ الوحيدة الموثوق بها أو آلية التخزين هو الخادم.

أفضل وسيلة لصقل البيانات التي تم إرجاعها هو استخدام المؤشر على مجموعة النتائج. على سبيل المثال ، ينبغي إذا كان هناك 15 نتيجة لعملية حسابية ، بالإضافة إلى عناوين المواقع المذكورة كل نتيجة يمكن الرجوع إليها باستخدام عنوان فريد تحديد عدد النتيجة. أفكر في عدد النتيجة باعتبارها جزءا من سلسلة زمنية. في سلسلة الوقت ، يمكنك استرداد جميع القراد في ساعة واحدة ، ولكن أيضا جميع القراد في دقيقة واحدة وجميع القراد في الثانية.

مقال مقدم من سونيا Lande


تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات.
المهم : هذه المادة "التحقق من صحة النص المتشعب باستخدام" وقد ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.


Online: 285 users browsing the articles directory