دوشنبه 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
به عنوان یک دستورالعمل ذخیره سازی:
-
تاریخ در
Last-Modified
هدر باید بر اساس استاندارد HTTP فرمت شود. برای جلوگیری از مشکلات تجزیه، توصیه می کنیم از قالب تاریخ زیر استفاده کنید: “روز هفته، DD دوشنبه YYYY HH:MM:SS منطقه زمانی”. به عنوان مثال، “جمعه، 04 سپتامبر 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) به خزنده. این برای هر درخواست بعدی اتفاق میافتد تا زمانی که پیششرطها تأیید نشوند (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