HTTP Caching: به‌روزرسانی فیلدهای هدر ذخیره شده (RFC 9111)

http caching updating stored header fields rfc 9111
20 آبان 1403

سلام! امروز می‌خوایم درباره به‌روزرسانی فیلدهای هدر ذخیره شده در HTTP صحبت کنیم، که در RFC 9111 بهش پرداخته شده. این موضوع یکی از بخش‌های مهم عملکرد و کارایی وب است و به بهینه‌سازی تجربه کاربران در مرور وب کمک می‌کنه.

زمانی که سرور به درخواست HTTP پاسخ می‌ده، اغلب اطلاعاتی رو در قالب هدر برای مرورگر ارسال می‌کنه. این اطلاعات می‌تونه شامل تاریخ انقضا، نوع محتوا، زبان، و مخصوصاً اطلاعات کش باشد. کشینگ می‌تونیه مدت بارگیری صفحات رو کاهش بده. زمانی که شما صفحه‌ای رو بارگذاری می‌کنید، مرورگر شما ممکنه بعضی از داده‌ها مثل تصاویر، فایل‌های CSS و JavaScript رو در حافظه کش ذخیره کنه تا در بارگذاری‌های بعدی سریع‌تر دسترسی داشته باشه.

RFC 9111 به تاکید بر این نکته می‌پردازه که چطور هدرهای HTTP دوره‌ای به‌روزرسانی بشن تا داده‌های کش شده همواره تازه و مرتبط باشند. این سؤال رو بررسی می‌کنه: اگر محتوای سایت تغییر کنه، یا اگر نیاز باشه اطلاعات جدیدی به کاربران ارسال بشه، چطور می‌توان تطبیق داد؟

گواهی‌های قدیمی ممکنه کاربران رو به محتوایی منسوخ هدایت کنه و تجربه کاربری رو خراب کنه. به همین دلیل، باید استراتژی به‌روزرسانی هدرهای کش رو به‌درستی پیاده‌سازی کنید. حذف یا تغییر هدرهایی نظیر ETag یا Last-Modified می‌تونه به مرورگر دستور بده که محتوای جدید رو دانلود کنه.

برای مثال اگر از Cache-Control: max-age=3600 استفاده کردید، به مرورگر بگویید که این پاسخ برای یک ساعت معتبر است. اگر تغییری در آن زمان رخ داد، با به‌روزرسانی هدر، مرورگر رو تشویق می‌کنید تا برگرده و برای داده‌های جدید استعلام کنه.

نمونه کد:


HTTP/1.1 200 OK
Date: Mon, 29 Nov 2021 10:00:00 GMT
Cache-Control: max-age=3600
ETag: "abcde12345"
Last-Modified: Mon, 29 Nov 2021 09:00:00 GMT

توضیح خط به خط:

HTTP/1.1 200 OK
خط وضعیت که نشان‌دهنده پاسخ موفقیت‌آمیز است.
Date: Mon, 29 Nov 2021 10:00:00 GMT
تاریخ و ساعتی که پاسخ تولید شده است.
Cache-Control: max-age=3600
نشان می‌دهد که کش محتوای پاسخ تا 3600 ثانیه معتبر است.
ETag: "abcde12345"
شناسه منحصربه‌فردی برای محتوای فعلی که به کمک آن مرورگر تشخیص می‌دهد که آیا محتوا تغییری کرده یا نه.
Last-Modified: Mon, 29 Nov 2021 09:00:00 GMT
نشان‌دهنده زمان آخرین تغییر در محتوای پاسخ.

سوالات متداول

؟

چرا به‌روزرسانی هدرهای کش مهم است؟

؟

چگونه می‌توان هدرهای کش را تغییر داد تا همیشه محتوای جدید به کاربران نمایش داده شود؟

؟

آیا کشینگ می‌تواند مشکلاتی ایجاد کند؟