تخزين مؤقت

ينطبق هذا المستند على الطرق التالية:

لمحة عن التخزين المؤقت

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

واجهة برمجة تطبيقات البحث

يجب أن يخزّن عملاء واجهة برمجة تطبيقات البحث مؤقتًا كل عنصر ThreatMatch تم عرضه خلال المدة المحددة. من خلال حقل cacheDuration. ويحتاج العملاء حينئذٍ إلى الرجوع إلى ذاكرة التخزين المؤقت قبل إجراء طلب threatMatches إلى الخادم. إذا كانت مدة ذاكرة التخزين المؤقت لملف ThreatMatch تم إرجاعه سابقًا لم تنتهِ صلاحيتها بعد، على العميل افتراض أنّ العنصر لا يزال غير آمن. جارٍ تخزين عنصرَين (ThreatMatch) مؤقتًا قد يقلل من عدد طلبات واجهة برمجة التطبيقات التي يرسلها العميل.

مثال: recognizedMatch.find

انقر على روابط الطلب والاستجابة في عنوان الجدول للحصول على أمثلة كاملة.

التحقّق من عنوان URL
طلب تهديدات
عنوان URL مطابق لـ
الاستجابة للتهديدات
سلوك التخزين المؤقت
"threatEntries": [
 {"url": "http://www.urltocheck.org/"}
]
"matches": [{
 "threat": {"url": "http://www.urltocheck.org/"},
 "cacheDuration": "300.000s"
}]
المطابقة
على العميل الانتظار لمدة 5 دقائق قبل إرسال طلب threatMatches جديد يتضمن عنوان URL http://www.urltocheck.org/.

تحديث واجهة برمجة التطبيقات

لتقليل إجمالي عدد طلبات fullHashes المرسَلة إلى Google باستخدام Update API، يستخدم العملاء مطلوبة للاحتفاظ بذاكرة تخزين مؤقت محلية. توفّر واجهة برمجة التطبيقات نوعَين من التخزين المؤقت، الإيجابي والسلبي.

التخزين المؤقت الإيجابي

لمنع العملاء من تكرار السؤال عن حالة تجزئة كاملة غير آمنة معيّنة، يحتوي كل ThreatMatch المعروض على مدة موجبة لذاكرة التخزين المؤقت (محددة بواسطة الحقل cacheDuration)، وهو ما يشير إلى المدة التي تُعتبر فيها التجزئة الكاملة غير آمنة.

التخزين المؤقت السلبي

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

الرجوع إلى ذاكرة التخزين المؤقت

عندما يريد العميل التحقّق من حالة عنوان URL، يتم أولاً احتساب التجزئة الكاملة له. إذا كانت وجود بادئة التجزئة في قاعدة البيانات المحلية، فيجب على العميل بعد ذلك الرجوع إلى ذاكرة التخزين المؤقت الخاصة به تقديم طلب fullHashes إلى الخادم.

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

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

تحديث ذاكرة التخزين المؤقت

يجب تعديل ذاكرة التخزين المؤقت للعميل عند تلقّي استجابة fullHashes. ذاكرة تخزين مؤقت إيجابية يجب إنشاء الإدخال أو تعديله للتجزئة الكاملة وفقًا للحقل cacheDuration. وتبدأ بادئة التجزئة يجب أيضًا إنشاء مدة ذاكرة تخزين مؤقت سلبية أو تعديلها وفقًا negativeCacheDuration للاستجابة .

إذا لم يؤدِّ طلب fullHashes اللاحق إلى عرض تجزئة كاملة موجبة حاليًا في ذاكرة التخزين المؤقت، لا يكون العميل مطالبًا بإزالة إدخال ذاكرة التخزين المؤقت الموجب. لا داعي للقلق عمليًا، نظرًا لأن مُدد التخزين المؤقت الإيجابية تكون عادةً قصيرة (بضع دقائق) للسماح تصحيح النتائج الموجبة الخاطئة.

مثال على السيناريو

في المثال التالي، لنفترض أن h(url) هي بادئة التجزئة لعنوان URL وH(url) هو تجزئة عنوان URL بالطول الكامل. أي أن h(url) = SHA256(url).substr(4), H(url) = SHA256(url).

لنفترض الآن أن أحد العملاء (بذاكرة التخزين المؤقت فارغة) يزور example.com/ ويرى أن h(example.com/) هو في قاعدة البيانات المحلية. يطلب العميل تجزئات التجزئة بالطول الكامل لبادئة التجزئة h(example.com/). ويسترد H(example.com/) التجزئة بالطول الكامل مع مدة ذاكرة تخزين مؤقت موجبة تبلغ 5 دقيقة ومدّة سلبية لذاكرة التخزين المؤقت تبلغ ساعة واحدة.

تخبر مدة ذاكرة التخزين المؤقت الموجبة التي تبلغ 5 دقائق العميل بمدة التجزئة بالطول الكامل. يجب اعتبار H(example.com/) غير آمن بدون إرسال طلب fullHashes آخر. بعد 5 دقيقة، على العميل إصدار طلب "fullHashes" آخر لتلك البادئة h(example.com/) في حال كانت يزور العميل example.com/ مرة أخرى. على العميل إعادة ضبط مدة ذاكرة التخزين المؤقت السلبية لبادئة التجزئة لكل رد جديد.

تخبر مدة ذاكرة التخزين المؤقت السالبة التي تبلغ ساعة واحدة العميل بمدة جميع علامات التجزئة الأخرى ذات الطول الكامل إلى جانب H(example.com/) التي تشترك في البادئة h(example.com/) نفسها، يجب اعتبارها آمنة. بالنسبة خلال ساعة واحدة، مع مراعاة أنّ كل عنوان URL يكون آمنًا، يجب أن يكون h(URL) = h(example.com/) آمنًا ولذلك لا تؤدي إلى طلب fullHashes (بافتراض أن H(URL) != H(example.com/)).

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

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

مثال: FullHashes.find

انقر على روابط الطلب والاستجابة في عنوان الجدول للحصول على أمثلة كاملة.

بادئات التجزئة
طلب FullHashes
تطابقات تجزئة كاملة الطول
استجابةfullHashes
سلوك التخزين المؤقت
"threatEntries": [
  {"hash": "0xaaaaaaaa"}
]
"matches": [],
"negativeCacheDuration": "3600.000s"
لا يتوفّر محتوى مطابق.
يجب ألا يرسل العميل أي طلبات من نوع fullHashes للحصول على بادئة التجزئة 0xaaaaaaa لمدة ساعة واحدة على الأقل. تُعتبر أي تجزئة بالبادئة 0xaaaaaaa آمنة لمدة ساعة واحدة.
"threatEntries": [
  {"hash": "0xbbbbbbbb"}
]
"matches": [
 "threat": {"hash": "0xbbbbbbbb0000..."}
 "cacheDuration": "600.000s",
],
"negativeCacheDuration": "300.000s"
المطابقات المحتملة
على العميل أن يراعي عنوان URL الذي يحتوي على التجزئة الكاملة 0xbbbbbb0000... غير آمن لمدة 10 دقائق. تشير رسالة الأشكال البيانية العميل يجب أن يفكر في جميع عناوين URL الأخرى ذات بادئة التجزئة 0xbbbbbb آمنة لمدة 5 دقائق. بعد 5 دقيقة، ستنتهي صلاحية إدخال ذاكرة التخزين المؤقت السلبية لبادئات التجزئة. نظرًا لأن إدخال ذاكرة التخزين المؤقت الموجب للموقع 0xbbbbbbbb0000... لم تنتهِ الصلاحية بعد، يجب أن يرسل العميل طلبات fullHashes لجميع علامات التجزئة باستثناء ذلك.
"threatEntries": [
  {"hash": "0xcccccccc"}
]
"matches": [
 "threat": {"hash": "0xccccccccdddd..."},
 "cacheDuration": "600.000s"
],
"negativeCacheDuration": "3600.000s"
المطابقات المحتملة
يجب ألا يرسل العميل أي طلب fullHashes لبادئة التجزئة 0xcccccc لمدة ساعة واحدة على الأقل ويفترض أن تكون هذه البادئة آمنة، إلا إذا كانت التجزئة الكاملة لعنوان URL تتطابق مع التجزئة الكاملة المخزّنة مؤقتًا 0xccccccdddd.... وفي هذه الحالة، من المفترض أن يعتبر العميل عنوان URL هذا غير آمن لمدة 10 دقائق. تنتهي صلاحية التجزئة الكاملة بعد 10 دقائق. ويجب أن تكون أي عمليات بحث لاحقة عن تلك التجزئة الكاملة إنشاء طلب fullHashes جديد.