الاثنين 9 ديسمبر 2024
موضوعنا اليوم هو التخزين المؤقت.
توسّعت شبكة الإنترنت بمرور السنين، ما أدى إلى زيادة في عدد عمليات الزحف التي يُجريها محرّك بحث Google. مع أنّ البنية الأساسية للزحف على Google متوافقة مع آليات التخزين المؤقت الإرشادي، وقد كانت دائمًا كذلك، انخفض عدد الطلبات التي يمكن عرضها من ذاكرات التخزين المؤقت المحلية: منذ 10 سنوات، كانت 0.026% من إجمالي عمليات الجلب قابلة للتخزين المؤقت، وهي نسبة ليست مشجّعة، لكنّها انخفضت أكثر وأصبحت الآن 0.017%.
ما أهمية التخزين المؤقت؟
التخزين المؤقت هو جزء أساسي من مجموعة الأجزاء التي تشكّل شبكة الإنترنت. يتيح التخزين المؤقت تحميل الصفحات بلمح البصر عند معاودة زيارتها، ما يساهم في توفير موارد الحوسبة، وبالتالي الموارد الطبيعية، بالإضافة إلى توفير مقدار هائل من معدل نقل البيانات المُكلِف لدى كل من العملاء والخوادم.
على وجه الخصوص، في المواقع الإلكترونية الكبيرة الحجم التي نادرًا ما يتم فيها إجراء تغييرات على المحتوى ضمن عناوين URL الفردية، يمكن أن تساهم إتاحة التخزين المؤقت محليًا في أن يتم الزحف إلى الموقع بشكل أكثر كفاءة. تتيح البنية الأساسية للزحف في Google التخزين المؤقت الإرشادي عبر HTTP كما هو محدّد وفق معيار التخزين المؤقت عبر HTTP، وتحديدًا من خلال عنوان الاستجابة الذي يتضمّن ETag
وعنوان الطلب الذي يتضمّن If-None-Match
، ومن خلال عنوان الاستجابة الذي يتضمّن Last-Modified
وعنوان الطلب الذي يتضمّن If-Modified-Since
.
ننصح بشدة باستخدام السمة ETag
لأنّها أقل عرضة للأخطاء والمشاكل (فقيمتها غير منظَّمة، بعكس قيمة السمة Last-Modified
). وعند الإمكان، ننصحكم بتوفير كِلتا السمتين، لأنّ ذلك قد يكون أكثر فائدة.
بالنسبة إلى التغييرات التي تعتقدون أنّها تتطلّب من العملاء إعادة تحميل ذاكرات التخزين المؤقت، الأمر يعود إليكم. ننصحكم بأن تطلبوا منهم إعادة تحميل ذاكرة التخزين المؤقت عندما تُجرون تغييرات مهمة على المحتوى، لكن إذا عدّلتم تاريخ حقوق الطبع والنشر في أسفل الصفحة مثلاً، لا يُعدّ ذلك تغييرًا مهمًا على الأرجح.
ETag
وIf-None-Match
تتيح برامج الزحف من Google استخدام طلبات مشروطة تستند إلى ETag
، كما هو محدّد بالضبط وفق معيار التخزين المؤقت عبر HTTP.
بعبارة أخرى، لإطلاع برامج الزحف من Google على تفضيلاتكم بشأن التخزين المؤقت، يجب ضبط القيمة Etag
على أي سلسلة ASCII عشوائية (يمكن أن تكون جزءًا من المحتوى أو رقم إصدار أو جزءًا من π، كما تشاؤون)، شرط أن تكون القيمة فريدة لتمثيل المحتوى المستضاف على عنوان URL الذي يتم الوصول إليه.
على سبيل المثال، في حال استضافة نُسخ مختلفة من المحتوى نفسه على عنوان URL نفسه (مثلاً نسخة مخصّصة لأجهزة الكمبيوتر وأخرى مخصّصة للأجهزة الجوّالة)، يمكن استخدام قيمة ETag
فريدة في كل نسخة.
إنّ برامج الزحف من Google التي تتيح التخزين المؤقت سترسل القيمة ETag
التي تم عرضها نتيجة عملية زحف سابقة إلى عنوان URL في If-None-Match header
. إذا كانت قيمة ETag
التي أرسلها الزاحف مطابقة للقيمة الحالية التي أنشأها الخادم، من المفترض أن يعرض الخادم الرمز 304
لحالة HTTP (لم يتم التعديل) بدون نص HTTP. ومن المهم ألّا يتم عرض نص HTTP للسببين التاليين:
- لن يحتاج الخادم إلى استهلاك موارد الحوسبة لإنشاء المحتوى الفعلي، ما يؤدي إلى أن توفّروا المال
- لن يحتاج الخادم إلى نقل نص HTTP، ما يؤدي أيضًا إلى أن توفّروا المال
من جهة العميل، مثلاً متصفح المستخدم أو Googlebot، يتم استرداد المحتوى المدرَج على عنوان URL المطلوب من ذاكرة التخزين المؤقت الداخلية لدى العميل. وبما أنّه لن يتم نقل أي بيانات، تحدث هذه العملية بلمح البصر، ما يعزّز رضا المستخدمين وقد يساهم أيضًا في توفير بعض الموارد لديهم.
Last-Modified
وIf-Modified-Since
كما هي الحال بالنسبة إلى السمة ETag
، تتيح برامج الزحف من Google استخدام طلبات مشروطة تتضمّن السمة Last-Modified based
أيضًا، كما هو محدّد بالضبط وفق معيار التخزين المؤقت عبر HTTP. وتعمل هذه السمة بالطريقة نفسها كالسمة ETag
من منظور دلالي، أي أنّه يتم استخدام معرّف لتحديد ما إذا كان المورد قابلاً للتخزين مؤقتًا، وتوفّر المزايا نفسها كالسمة ETag
من جهة العميل.
مع ذلك، إليكم بعض النصائح التي يجب الالتفات إليها عند استخدام Last-Modified
كتوجيه للتخزين المؤقت:
-
يجب أن يكون تنسيق التاريخ في العنوان الذي يتضمّن
Last-Modified
متوافقًا مع معيار HTTP. لتجنُّب حدوث أي مشاكل متعلّقة بالتحليل، ننصح باستخدام التنسيق التالي للتاريخ: "اليوم من الأسبوع، DD Mon YYYY HH:MM:SS المنطقة الزمنية". مثلاً: "Fri, 4 Sep 1998 19:15:56 GMT". -
مع أنّ ضبط الحقل
max-age
في العنوان الذي يتضمّنCache-Control
ليس شرطًا، ننصحكم بضبطه لمساعدة برامج الزحف على معرفة الوقت المناسب لإعادة الزحف إلى عنوان URL المحدّد. اضبطوا قيمة الحقلmax-age
على عدد الثواني المتوقّع ألّا يتغيّر المحتوى خلالها. مثلاً:Cache-Control: max-age=94043
.
أمثلة
أدرك أنّه قد يكون من الصعب فهم طريقة عمل التخزين المؤقت الإرشادي، إلّا أنّ الاطّلاع على مثال على سلاسل الطلبات والاستجابات قد يساهم في توضيح طريقة العمل. في ما يلي سلسلتان، واحدة لـ ETag
/If-None-Match
والأخرى لـ Last-Modified
/If-Modified-Since
، لتوضيح طريقة العمل المفترَضة:
ETag /If-None-Match |
Last-Modified /If-Modified-Since |
|
---|---|---|
استجابة الخادم لعملية زحف: هي الاستجابة التي تتيح للزاحف حفظ الحقلين ETag وLast-Modified اللذين يحدّدان الشروط المسبقة ضمن العنوان.
|
HTTP/1.1 200 OK Content-Type: text/plain Date: Fri, 4 Sep 1998 19:15:50 GMT ETag: "34aa387-d-1568eb00" ... |
HTTP/1.1 200 OK Content-Type: text/plain Date: Fri, 4 Sep 1998 19:15:50 GMT Last-Modified: Fri, 4 Sep 1998 19:15:56 GMT Cache-Control: max-age=94043 ... |
طلب مشروط لاحق للزاحف: يستند الطلب المشروط إلى قيم الشروط المسبقة ضمن العنوان والتي تم حفظها من طلب سابق. تتم إعادة إرسال القيم إلى الخادم لتأكيدها في عناوين الطلبات التي تتضمن If-None-Match وIf-Modified-Since .
|
GET /hello.world HTTP/1.1 Host: www.example.com Accept-Language: en, hu User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html) If-None-Match: "34aa387-d-1568eb00" ... |
GET /hello.world HTTP/1.1 Host: www.example.com Accept-Language: en, hu User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html) If-Modified-Since: Fri, 4 Sep 1998 19:15:56 GMT ... |
استجابة الخادم للطلب المشروط: بما أنّه تم التأكد من جهة الخادم من صحة قيم الشروط المسبقة ضمن العنوان والتي أرسلها الزاحف، يعرض الخادم للزاحف الرمز 304 لحالة HTTP (بدون نص HTTP). يحدث ذلك لكل الطلبات اللاحقة إلى أن يتعذر التأكد من صحة الشروط المسبقة (يتغيّر تاريخ ETag أو Last-Modified من جهة الخادم).
|
HTTP/1.1 304 Not Modified Date: Fri, 4 Sep 1998 19:15:50 GMT Expires: Fri, 4 Sep 1998 19:15:52 GMT Vary: Accept-Encoding If-None-Match: "34aa387-d-1568eb00" ... |
HTTP/1.1 304 Not Modified Date: Fri, 4 Sep 1998 19:15:50 GMT Expires: Fri, 4 Sep 1998 19:15:51 GMT Vary: Accept-Encoding If-Modified-Since: Fri, 4 Sep 1998 19:15:56 GMT ... |
إذا كنتم تودّون تعزيز رضا المستخدمين وتوفير بعض المال من خلال خفض تكلفة الاستضافة، ننصحكم باستشارة المستضيف أو مزوّد نظام إدارة المحتوى (CMS) أو المطوّرين بشأن كيفية تفعيل التخزين المؤقت عبر HTTP لمواقعكم، لأنّ ذلك سيعود بالفائدة على المستخدمين.
إذا أردتم الدردشة بشأن التخزين المؤقت، ما عليكم سوى الانتقال إلى منتدى المساعدة الخاص بـ "مجموعة خدمات بحث Google"، وإذا كانت لديكم ملاحظات بشأن طريقة التخزين المؤقت لدينا، يمكنكم إرسالها من خلال مستنداتنا المتعلّقة بالتخزين المؤقت والتي نشرناها في الوقت نفسه مع منشور المدوّنة هذا.
هل يهمّك معرفة المزيد عن الزحف؟ ننصحك بالاطّلاع على سلسلة "الزحف في ديسمبر" بأكملها:
"نير كلوش"
مدير منتجات في "مؤشرات Google" وSearch Console "نير كلوش" هو مدير منتجات في "مؤشرات Google" وSearch Console، ويركّز على الأدوات التي تساهم في تحسين جودة شبكة الويب المفتوحة والمنظومات المتكاملة
آساف أرنون
مدير مهندسي البرمجيات يمكن الاطّلاع على المشاركات التي نشرها "آساف أرنون" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
آسيش مارينا
مدير دعم المنتجات "آسيش مارينا" هو مدير دعم المنتجات لدى Search Console في Google. يرتكز عمله على مساعدة مالكي المواقع الإلكترونية وتقديم الدعم المناسب لتحسين مستوى ظهور مواقعهم على محرك بحث Google. كان سابقًا جزءًا من فريق جودة
آلان كينت
مسؤول علاقات المطوّرين اطّلِع على المنشورات التي كتبها "آلان كينت" في مدوّنة "مجموعة خدمات بحث Google". Twitter
آنا أوغاوا
كبيرة مستشاري منظومة "بحث Google" المتكاملة اطّلِع على المشاركات التي نشرتها "آنا أوغاوا" في مدوّنة "مجموعة خدمات بحث Google". Twitter | LinkedIn
أدريان غريغوري لوي
مدير الشراكات في "أخبار Google" اطّلِع على المنشورات التي كتبها "أدريان غريغوري لوي" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
أدريانا بورتر فيلت
أمان Chrome اطّلِع على المشاركات التي نشرتها "أدريانا بورتر فيلت" في مدوّنة "مجموعة خدمات بحث Google".
ألدريتش كريستوفر
شفافية السياسات اطّلِع على المنشورات التي شاركها "ألدريتش كريستوفر" في مدوّنة "مجموعة خدمات بحث Google". Twitter | LinkedIn | YouTube
أليسا روبرتس
من الأعضاء السابقين في فريق جودة البحث اطّلِع على المنشورات التي شاركَتها "أليسا روبرتس" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
أندريه باسكوفيتشي
فريق أدوات مشرفي المواقع اطّلِع على المشاركات التي نشرها "أندريه باسكوفيتشي" في مدوّنة "مجموعة خدمات بحث Google".
أورورا موراليس
الثقة والسلامة تعمل "أورورا" ضمن "فريق الثقة والسلامة" في Google. وقد كرّست وقتها منذ عدّة سنوات لتثقيف العاملين في المجال بشأن السياسات والإرشادات المتعلقة بالمنتجات، وذلك بهدف إنشاء منظومة متكاملة أكثر أمانًا
أوفير روفال
مسؤول مدراء المنتجات في Search Console اطّلِع على المشاركات التي نشرها "أوفير روفال" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
إدو بيريدا
فريق البرامج المفتوحة المصدر في "بحث Google" اطّلِع على منشورات "إدو بيريدا" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn | GitHub | Mastodon | Twitter
إريك سيلفا
مدير الإنتاج اطّلِع على المشاركات التي نشرها "إريك سيلفا" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
إيان هونغ 洪翊恩
مستشار في منظومة "بحث Google" المتكاملة اطّلِع على المشاركات التي نشرها "إيان هونغ 洪翊恩" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
إيجي كيتامورا
مسؤول علاقات المطوّرين لدى Chrome اطّلِع على المنشورات التي شارَكها "إيجي كيتامورا" في مدوّنة "مجموعة خدمات بحث Google". الموقع الإلكتروني | Twitter | GitHub | Mastodon | LinkedIn
إيرل جيه واغنر
مهندس برمجيات اطّلِع على المشاركات التي نشرها "إيرل جيه واغنر" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
إيرينا تودوتشي
مهندسة برمجيات اطّلِع على المشاركات التي نشرتها "إيرينا تودوتشي" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
باتريك كيتنر
مسؤول علاقات المطوّرين اطّلِع على المشاركات التي نشرها "باتريك كيتنر" في مدوّنة "مجموعة خدمات بحث Google". Twitter
برافير غوبتا
فريق جودة البحث اطّلِع على المشاركات التي نشرها "برافير غوبتا" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
بيير فار
محلّل لمؤشرات مشرفي المواقع اطّلِع على المشاركات التي نشرها "بيير فار" في مدوّنة "مجموعة خدمات بحث Google".
تاكاكي ماكينو
مدير برامج في قسم علاقات "بحث Google" اطّلِع على المشاركات التي نشرها "تاكاكي ماكينو" في مدوّنة "مجموعة خدمات بحث Google". الموقع الإلكتروني
تاكياكي كانايا ★ 金谷 武明
شفافية السياسات اطّلِع على المشاركات التي نشرها "تاكياكي كانايا ★ 金谷 武明" في مدوّنة "مجموعة خدمات بحث Google". الموقع الإلكتروني | المدوّنة | Twitter | LinkedIn
تشيري بروماون
محلّلة لجودة "بحث Google" اطّلِع على المنشورات التي كتبتها "تشيري بروماون" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
توماس هان
مدير المنتجات في فريق "بحث Google" اطّلِع على المشاركات التي نشرها "توماس هان" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
تيري إدناكوت
مديرة برامج اطّلِع على المشاركات التي نشرتها "تيري إدناكوت" في مدوّنة "مجموعة خدمات بحث Google". Twitter | LinkedIn
تيفاني أوبيروي
فريق جودة البحث اطّلِع على المنشورات التي كتبتها "تيفاني أوبيروي" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn
تي. في. رامان
اطّلِع على المشاركات التي نشرها "تي. في. رامان" في مدوّنة "مجموعة خدمات بحث Google". الموقع الإلكتروني
جون مولر
خبير في "بحث Google" ينسّق "جون" جهود فريق علاقات "بحث Google". ويعمل هو وفريقه على ربط عالم هندسة البحث الداخلي في Google بالجهات التي تنشئ المواقع الإلكترونية العامة وتحسّنها. ويساعد الفريق في
جوناثان سيدي
مدير منتجات اطّلِع على المشاركات التي نشرها "جوناثان سيدي" في مدوّنة "مجموعة خدمات بحث Google". LinkedIn