کنترل کش (Cache-Control) نوعی هدر HTTP است که مطابق با رفتار کش مرورگر کاربر عمل میکند. این یعنی زمانی که از سایتی بازدید میکنید، مرورگر منابعی مثل تصویر لوگو و بنرهای یک سایت را در حافظه کش خود پنهان میکند؛ درنتیجه اگر مجدداً صفحه را بارگذاری کنید، صفحه برایتان سریعتر لود خواهد شد.مدیریت Cache-Control
منظور از هدرهای HTTP در تعریف کنترل کش، نوعی راه ارتباطی است بین درخواستهایی که کاربر به سرور و پاسخهایی که سرور به کاربر ارسال میکند. هدرهای HTTP تعیین میکند که اطلاعات درخواستی از چه منبعی است، کاربر از چه مرورگری استفاده میکند و چه فرمت دادهای را میپذیرد.
زمانی که کاربر مجدداً از سایتی بازدید میکند، کنترل کش قوانینی را تعریف خواهد کرد که طی هر درخواست کاربر، تعیین میکند اطلاعات از کش مرورگر کاربر بارگذاری شود یا مرورگر درخواست جدید به سرور ارسال کند. در ادامه، برای درک بهتر اجازه دهید نگاهی به کش مرورگر بیندازیم.
وقتی برای اولین بار سایتی رو مشاهده میکنید ، اطلاعات سایت در کش مرورگر شما ذخیره شده تا درصورت بازدید مجدد، محتوای سایت برایتان سریعتر بارگذاری شود. طی هر درخواست آپلود کانتنت یک سایت از مرورگر به سمت سرور، هدر کش کنترل، تعیین میکند محتوای موردنظر از حافظه کش یا از سرور ارسال شود. بارگذاری محتوا از حافظه کش، سرعت بارگذاری صفحات سایت را بالا برده و تجربه کاربری بهتری برای کاربران رقم خواهد زد.
browser cache چیست؟
زمانی که سایتی را با مرورگر خود جستجو میکنید، کش مرورگر (Browser Cache) اطلاعات آن سایت را بهعنوان منبع ذخیره میکند. سپس اگر مجدداً به سایت موردنظر برگردید، اطلاعات سایت، سریعتر برایتان بارگذاری میشود. این کار، هنر کش مرورگر است.
هر مرورگر برای ذخیره اطلاعات در حافظه پنهان خود، یک مقدار TTL یا Time To Live دارد. مقدار TTL زمان انقضای یک کش است. اگر پس از انقضای TTL، کاربر از سایت بازدید کند، مرورگر درخواست خود را به سرور ارسال کرده و این بار بهجای حافظه کش، اطلاعات بهطور مستقیم از سرور بارگذاری خواهد شد.
برای فعالسازی Browser Cache، ابتدا باید بررسی کنید چه مدتزمانی قصد دارید اطلاعاتی مانند فایلهای سایت، تصاویر یا محتواهای دیگر در مرورگر بهصورت کش باقی بماند. شما میتواند از طریق افزونه یا بهصورت دستی هدرهای کنترل کش مرورگر را تنظیم کنید. برای آشنایی بیشتر با تنظیمات کش مرورگر، خواندن مقاله «تنظیمات Caching در کلودفلر برای افزایش عملکرد وبسایت» کمکتان خواهد کرد.
کش CDN چیست؟
به کش یا حافظه پنهانی که توسط CDN مورد استفاده قرار میگیرد، کش CDN میگویند. وقتی مرورگر درخواستی را از سایتی که مجهز به CDN است، ارسال میکند، درخواست مرورگر به جای سرور اصلی به CDN فرستاده میشود. اگر CDN، نسخه کش شده از سایت موردنظر را داشته باشد، آن را به مرورگر تحویل میدهد؛ درنتیجه میزان استفاده از پهنای باند و زمان بارگذاری سایت تا حد قابل توجهی کاهش پیدا میکند. زیرا دیگر نیازی نیست از زمان درخواست مرورگر تا سرور اصلی تمام مسیر را طی کند. بههمین دلیل، سایتهایی که مجهز به کش CDN هستند، لود و بارگذاری سریعتری دارند.
اهمیت Cache-Control چیست؟
حفظ و نگهداری از کش مرورگر کاربر، یک راهکار کاربردی و مؤثر برای بهبود تجربه کاربری و افزایش سرعت سایت است. اما این راهکار بدون استفاده از کش کنترل مؤثر نخواهد بود. بدون استفاده از Cache Control منابع و محتوا فارغ از درنظر گرفتن ماهیت خود در حافظه پنهان کش میشود؛ درنتیجه ممکن است اطلاعات حساسی مثل اطلاعات بانکی یا محتوایی که نیاز است بهطور مداوم بهروزرسانی شود، در حافظه کش باقی بماند.
به بیان سادهتر،
کاربرد Cache Control در تعریف ماهیت محتوا است. هدر Cache Control هر نوع کش از جمله کش مرورگر را کارآمدتر کرده است.
سایتهایی که از CDN کلودفلر استفاده میکنند، با استفاده از هدر Cache Control کشینگ را به بهترین نحو ممکن انجام داده و عملکرد بهتری دارند.
پارامترهایی که در Cache-Control وجود دارد
در پاسخ به این سوال که پارامترهای هدر کنترل کش چیست، میتوان گفت هدرهای کنترل کش از جفت Key-Valueهایی تشکیل شده است که توسط «:» از هم جدا میشوند. عبارتی که همیشه در سمت چپ «:»، قرار دارد، همان key کش کنترل است. عبارت سمت راست «:» نیز مقدار یا Value بوده که معمولاً با یک یا چند «,» از هم جدا میشوند. این عبارات، دستورالعملهایی هستند که وبسرورهای HTTP به مرورگر ارسال و تعیین میکند چه منبعی در حافظه کش به چه مدتزمان باقی بماند. در ادامه مقاله «Cache-Control چیست» با این نوع دستورالعملها بیشتر آشنا خواهید شد.
۱. Cache-Control: Private
منظور از Private در Cache-Control چیست؟ این دستورالعمل نشان میدهد که محتوا در هیچ پروکسی کش نشود. این یعنی محتوا فقط توسط کاربر (یا همان کلاینت) قابل کش شدن است و CDN یا پروکسی نمیتواند آن را کش کند. پلتفرمهایی مثل اینستاگرام که امکان پرایوت کردن پیج را دارند، از این دستورالعمل استفاده میکنند. بهطوریکه اطلاعاتی که کاربر از پیج خود میبیند با اطلاعاتی که سایر افراد از پیج پرایوت او مشاهده میکنند، متفاوت است.
این دستورالعمل که اغلب مناسب وبسایتهایی با اطلاعات شخصی است، روشی برای تأمین امنیت دادههای یک سایت محسوب نمیشود و همچنان نیاز است از گواهی SSL استفاده کنید. مدیریت Cache-Control
۲. Cache-Control: Public
این دستورالعمل برخلاف عبارت بالا، نشان میدهد که منبع یا سایت میتواند توسط هر نوع کش ذخیره شود. این یعنی علاوهبر مرورگر کاربر، پروکسی و CDN نیز میتواند محتوا را کش کند.
۳. Cache-Control: No-Store
منظور از دستورالعمل No Store در Cache-Control چیست؟ این دستور نشان میدهد که سایت یا محتوا توسط هیچ نوع کش از جمله کش مرورگر کاربر، پروکسی و CDN ذخیره نخواهد شد؛ درنتیجه طی هر بار درخواست کاربر برای دریافت محتوا، درخواست او از مرورگر به سرور ارسال شده و مستقیماً از سرور بارگذاری خواهد شد. این پارامتر برای دادههای حساسی مثل اطلاعات بانکی مناسب است. اگر نمیخواهید هیچ محتوایی در کش ذخیره شود، از این دستور استفاده کنید. مدیریت Cache-Control
۴. Cache-Control: No-Cache
دستورالعمل No-Cache نشان میدهد کش وبسایت قابل نگهداری است اما محتوای آن باید قبل از ارائه به کاربر، اعتبارسنجی (Re-Validate) شود. این یعنی محتوا پس از درخواست کاربر، بهکمک ETagها برای تأیید اعتبار به سمت سرور ارسال میشود. سرور پس از تأیید (نه دانلود و بارگذاری مجدد) محتوا را به کاربر نشان خواهد داد. مدیریت Cache-Control
نقش ETagها در Cache-Control چیست؟ هدرهای ETag نوعی هدر HTTP هستند که نسخهای از محتوا را در زمان درخواست نشان میدهند. هر زمان محتوا یا منبع بهروز شود، نسخه ETag نیز تغییر خواهد کرد. طی هر درخواست کاربر با دستورالعمل No-Cache، مرورگر به سرور متصل شده و ETag محتوای ذخیره شده در سرور را با ETag کش شده مقایسه میکند. مدیریت Cache-Control
اگر ETagها مشابه باشند (StrongValidating ETag)، مرورگر با خیال راحت نسخه کش شده را به کاربر نشان میدهد. درصورتیکه ETag مرورگر با سرور متفاوت باشد (Weak ETag) سرور مجدداً اطلاعات منبع یا سایت را دانلود و بارگذاری میکند. با این دستورالعمل، همیشه اطمینان خواهید داشت که کاربر بهروزترین محتوا را دریافت خواهد کرد. مدیریت Cache-Control
۵. Cache-CControl: Max-Age
این دستورالعمل حداکثر زمان ماندگاری کش را برحسب ثانیه نشان میدهد. برای مثال، دستورالعمل زیر را درنظر بگیرید:
Cache-Control: max-age=3600, public
نمونه بالا یعنی محتوا بهصورت public (توسط هر نوع کش) به مدت ۳۶۰۰ ثانیه یا یک ساعت، بهصورت کش باقی میماند. پس از این بازه زمانی، اگر کاربر درخواست جدیدی ارسال کند، نسخه جدید محتوا از سمت سرور اصلی مجدداً دانلود و بهروزرسانی میشود.