خزیدن دسامبر: ذخیره HTTP | وبلاگ مرکزی جستجوی گوگل | Google for Developers

دوشنبه 9 دسامبر 2024

به ما اجازه دهید کش کنیم، خیلی لطفا.

با رشد اینترنت در طول سال ها، میزان خزیدن گوگل نیز افزایش یافت. در حالی که زیرساخت خزنده 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

خزنده های گوگل پشتیبانی می کنند ETag درخواست های مشروط مبتنی بر دقیقاً همانطور که در استاندارد حافظه پنهان HTTP تعریف شده است. یعنی برای علامت دادن اولویت ذخیره سازی به خزنده های گوگل، تنظیم کنید Etag مقدار هر رشته ASCII دلخواه (معمولاً یک هش از محتوا یا شماره نسخه است، اما می‌تواند بخشی از π نیز باشد) منحصر به فرد برای نمایش محتوای میزبانی شده توسط URL قابل دسترسی. برای مثال، اگر نسخه‌های مختلفی از یک محتوا را تحت یک URL (مثلاً نسخه موبایل و دسکتاپ) میزبانی کنید، هر نسخه می‌تواند منحصر به فرد خود را داشته باشد. ETag ارزش

خزنده‌های Google که از کش پشتیبانی می‌کنند، آن را ارسال می‌کنند ETag مقدار بازگشتی برای خزیدن قبلی آن URL در If-None-Match header. اگر ETag
مقدار ارسال شده توسط خزنده با مقدار فعلی تولید شده توسط سرور مطابقت دارد، سرور شما باید یک HTTP برگرداند 304 کد وضعیت (تغییر نشده) بدون بدنه HTTP. این بیت آخر، بدون بدنه HTTP، به چند دلیل بخش مهمی است:

  • سرور شما مجبور نیست منابع محاسباتی را صرف تولید محتوا کند. یعنی پول پس انداز می کنید

  • سرور شما نیازی به انتقال بدنه HTTP ندارد. یعنی پول پس انداز می کنید

در سمت سرویس گیرنده، مانند مرورگر کاربر یا Googlebot، محتوای زیر آن URL از حافظه پنهان داخلی مشتری بازیابی می شود. از آنجایی که هیچ انتقال داده ای در کار نیست، این اتفاق به سرعت رخ می دهد و کاربران را خوشحال می کند و به طور بالقوه برخی منابع را نیز برای آنها ذخیره می کند.

Last-Modified و If-Modified-Since

مشابه به ETag، خزنده های گوگل پشتیبانی می کنند Last-Modified based
درخواست های شرطی نیز دقیقاً همانطور که در استاندارد HTTP Caching تعریف شده است. این کار به همان روش انجام می شود ETag از منظر معنایی – یک شناسه برای تصمیم گیری در مورد اینکه آیا منبع قابل ذخیره است یا نه استفاده می شود – و همان مزایایی را ارائه می دهد که ETag در سمت مشتریان

اگر از آن استفاده می کنید، فقط چند توصیه داریم Last-Modified به عنوان یک دستورالعمل ذخیره سازی:

  1. تاریخ در Last-Modified هدر باید بر اساس استاندارد HTTP فرمت شود. برای جلوگیری از مشکلات تجزیه، توصیه می کنیم از قالب تاریخ زیر استفاده کنید: “روز هفته، DD دوشنبه YYYY HH:MM:SS منطقه زمانی”. به عنوان مثال، “جمعه، 04 سپتامبر 1998، 19:15:56 GMT“.

  2. اگرچه لازم نیست، تنظیم را نیز در نظر بگیرید 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) به خزنده. این برای هر درخواست بعدی اتفاق می‌افتد تا زمانی که پیش‌شرط‌ها تأیید نشوند (the 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 برای سایت خود صحبت کنید. اگر هیچ چیز دیگری نباشد، کاربران شما را کمی بیشتر دوست خواهند داشت.

اگر می‌خواهید در مورد ذخیره‌سازی گپ بزنید، به نزدیک‌ترین انجمن راهنمای جستجوی مرکزی خود بروید، و اگر نظراتی در مورد نحوه ذخیره‌سازی ما در حافظه پنهان دارید، بازخورد خود را در مورد اسناد مربوط به ذخیره‌سازی که همراه با این پست وبلاگ منتشر کرده‌ایم، بگذارید.

ارسال شده توسط Gary Illyes

Source link