Cache-Control چیست و چگونه آن را مدیریت کنیم؟

Cache-Control چیست؟
Avatar
نویسنده: سانیا عبدی‌پور
یکشنبه 22 مرداد 1402
مطالعه: ۱۹ دقیقه ۰ نظر ۱۲۲۵ بازدید

Cache-Control چیست؟ برای پاسخ به این سوال، فرض کنید همیشه به یک رستوران می‌روید و هربار فقط یک نوع غذا سفارش می‌دهید. به محض ورودتان به رستوران، مستقیماً سراغ میز و صندلی می‌روید که محل مخصوص شما برای نشستن است. وقتی برای دریافت سفارش نزد شما می‌آیند، به‌جای جستجو در منو و انتخاب بین غذاهای مختلف می‌گویید: «همان همیشگی». در این رستوران، محل نشستن شما و نوع غذایی که هربار سفارش می‌دهید، در حافظه کارکنان رستوران باقی مانده است؛ درنتیجه نیازی نیست مدام زحمت انتخاب غذا از منوی متنوع رستوران یا پیدا کردن میز غذا را به خود بدهید.

هدر Cache Control نیز نقشی مانند کارکنان رستوران دارد که با ذخیره کش مرورگر شما، بازدید از سایت را برایتان راحت‌تر و سریع‌تر می‌کند. در این مقاله از بلاگ پارس پک، به‌طور کامل هدر Cache Control و نحوه استفاده از Cache-Control را در وب‌سرورهای آپاچی و Nginx بررسی خواهیم کرد.

منظور از Cache-Control چیست؟

کنترل کش (Cache-Control) نوعی هدر HTTP است که مطابق با رفتار کش مرورگر کاربر عمل می‌کند. این یعنی زمانی که از سایتی بازدید می‌کنید، مرورگر منابعی مثل تصویر لوگو و بنرهای یک سایت را در حافظه کش خود پنهان می‌‌کند؛ درنتیجه اگر مجدداً صفحه را بارگذاری کنید، صفحه برایتان سریع‌تر لود خواهد شد.

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

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

خرید CDN پارس پک

کش مرورگر چیست؟

زمانی که سایتی را با مرورگر خود جستجو می‌کنید، کش مرورگر (Browser Cache) اطلاعات آن سایت را به‌عنوان منبع ذخیره می‌‌کند. سپس اگر مجدداً به سایت موردنظر برگردید، اطلاعات سایت، سریع‌تر برایتان بارگذاری می‌شود. این کار، هنر کش مرورگر است.

هر مرورگر برای ذخیره اطلاعات در حافظه پنهان خود، یک مقدار TTL یا Time To Live دارد.‌ مقدار TTL زمان انقضای یک کش است. اگر پس از انقضای TTL، کاربر از سایت بازدید کند، مرورگر درخواست خود را به سرور ارسال کرده و این بار به‌جای حافظه کش، اطلاعات به‌طور مستقیم از سرور بارگذاری خواهد شد.

برای فعال‌سازی Browser Cache، ابتدا باید بررسی کنید چه مدت‌زمانی قصد دارید اطلاعاتی مانند فایل‌های سایت، تصاویر یا محتواهای دیگر در مرورگر به‌صورت کش باقی بماند. شما می‌تواند از طریق افزونه یا به‌صورت دستی هدرهای کنترل کش مرورگر را تنظیم کنید. برای آشنایی بیشتر با تنظیمات کش مرورگر، خواندن مقاله «تنظیمات Caching در کلودفلر برای افزایش عملکرد وب‌سایت» کمکتان خواهد کرد.

برای آشنایی با اهمیت استفاده از کش وب‌سایت و نحوه فعال‌سازی آن برای وب‌سایت‌های وردپرسی مقاله زیر را بخوانید.

کش وب‌سایت چیست؟

کش CDN چیست؟

به کش‌ یا حافظه پنهانی که توسط 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: Public

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

۳. Cache-Control: No-Store

منظور از دستورالعمل No Store در Cache-Control چیست؟ این دستور نشان می‌دهد که سایت یا محتوا توسط هیچ نوع کش از جمله کش مرورگر کاربر، پروکسی و CDN ذخیره نخواهد شد؛ درنتیجه طی هر بار درخواست کاربر برای دریافت محتوا، درخواست او از مرورگر به سرور ارسال شده و مستقیماً از سرور بارگذاری خواهد شد. این پارامتر برای داده‌های حساسی مثل اطلاعات بانکی مناسب است. اگر نمی‌خواهید هیچ محتوایی در کش ذخیره شود، از این دستور استفاده کنید.

۴. Cache-Control: No-Cache

دستورالعمل No-Cache نشان می‌دهد کش وب‌سایت قابل نگهداری است اما محتوای آن باید قبل از ارائه به‌ کاربر، اعتبارسنجی‌ (Re-Validate) شود. این یعنی محتوا پس از درخواست کاربر، به‌کمک ETag‌ها برای تأیید اعتبار به سمت سرور ارسال می‌شود. سرور پس از تأیید (نه دانلود و بارگذاری مجدد) محتوا را به کاربر نشان خواهد داد.

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

نقش ETag‌ها در Cache-Control چیست؟ هدرهای ETag نوعی هدر HTTP هستند که نسخه‌ای از محتوا را در زمان درخواست نشان می‌دهند. هر زمان محتوا یا منبع به‌روز شود، نسخه ETag نیز تغییر خواهد کرد. طی هر درخواست کاربر با دستورالعمل No-Cache، مرورگر به سرور متصل شده و ETag محتوای ذخیره شده در سرور را با ETag کش شده مقایسه می‌کند.

اگر ETag‌ها مشابه باشند (StrongValidating ETag)، مرورگر با خیال راحت نسخه کش شده را به کاربر نشان می‌دهد. درصورتی‌که ETag مرورگر با سرور متفاوت باشد (Weak ETag) سرور مجدداً اطلاعات منبع یا سایت را دانلود و بارگذاری می‌کند. با این دستورالعمل، همیشه اطمینان خواهید داشت که کاربر به‌روزترین محتوا را دریافت خواهد کرد.

استفاده از Cache-Control
نمایش به‌روزترین محتوا با دستورالعمل No-Cache و ETag

۵. Cache-CControl: Max-Age

این دستورالعمل حداکثر زمان ماندگاری کش را برحسب ثانیه نشان می‌دهد. برای مثال، دستورالعمل زیر را درنظر بگیرید:

Cache-Control: max-age=3600, public

نمونه بالا یعنی محتوا به‌صورت public (توسط هر نوع کش) به مدت ۳۶۰۰ ثانیه یا یک ساعت، به‌صورت کش باقی می‌ماند. پس از این بازه زمانی، اگر کاربر درخواست جدیدی ارسال کند، نسخه جدید محتوا از سمت سرور اصلی مجدداً دانلود و به‌روزرسانی می‌شود.

۶. S-Maxage: Seconds

دستورالعمل بالا، در استفاده از کش کنترل برای کش‌های مشترک مانند CDN‌ها تعریف شده است. S-Max تعداد ثانیه‌هایی را نشان می‌دهد که یک کش اشتراکی قابلیت ذخیره کردن دارد.

۷. Expires

تا چند سال پیش، دستور Expires دستور اصلی برای تعیین انقضای کش براساس تاریخ هفته، ماه و ساعت بود. امروزه در اغلب سیستم‌های مدرن، Max-Age و S-Maxage برای تعیین انقضای کش کاربرد دارند و جای این دستور را گرفتند.

هدر Cache Control
استفاده از Expires برای تعیین انقضای کش

۸. Must-Revalidate

معنای Must-Revalidate در Cache-Control چیست؟ این دستورالعمل نشان می‌دهد که محتوا را می‌توان در حافظه پنهان ذخیره کرد و در حالت به‌روزرسانی مجدداً از آن استفاده کرد. درواقع، اگر محتوا قدیمی شود، قبل از استفاده مجدد نیاز است توسط سرور تأیید شود.

 زمانی که سرور قطع می‌شود، HTTP به کش‌ها اجازه می‌دهد تا نسخه قدیمی محتوا را به نمایش بگذارند. دستورالعمل Must-Revalidate راهی برای جلوگیری از این اتفاق است. با استفاده از این دستور و درصورت تأیید سرور، محتوای قدیمی به نمایش درمی‌آید.

نکته:

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

۹. Proxy-Revalidate

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

۱۰. No-Transform

برخی از واسطه‌ها به‌طور خودکار، محتوا را تغییر می‌دهند. برای مثال، حجم برخی از تصاویر را کاهش می‌دهند. دراین‌صورت، محتوا برای کاربر به‌درستی ظاهر نمی‌شود. دستورالعمل No-Transform نشان می‌دهد که واسطه‌ها فارغ از کش شدن یا نشدن محتوا، نباید آن را تغییر دهند.

۱۱. Last-Modified

این دستورالعمل، زمان آخرین تغییرات یک سند را نشان می‌دهد. زمانی که یک Cache Stores، با دستورالعمل Last modified شناخته می‌شود، یعنی کش از آخرین زمانی که بارگذاری شده، تغییر پیدا کرده است. استفاده از این دستور نیز نوعی اعتبارسنجی کش است و نشان می‌دهد آیا کش از آخرین بارگذاری، تغییر کرده است یا خیر.

کاربرد Cache Control
اعتبارسنجی کش براساس آخرین زمان بارگذاری

۱۲. Stale-While-Revalidate

این دستور نشان می‌دهد کش همزمان که دنبال محتوای تازه است، محتوای قدیمی را نیز می‌تواند به کاربر نشان دهد. برای مثال، دستورالعمل زیر را درنظر بگیرید:

Cache-Control: max-age=۶۰۴۸۰۰, stale-while-revalidate=۸۶۴۰۰

در مثال بالا، محتوا به مدت ۶۰۴۸۰۰ ثانیه یعنی ۷ روز تازه است و پس از ۷ روز منقضی می‌شود. کش مجاز است از آن برای هر درخواستی که در ۲۴ ساعت بعد انجام می‌شود، استفاده کند؛ به شرط آنکه اعتبارسنجی آن از سمت سرور انجام شود.

 متاتگ کنترل کش چیست؟
اعتبارسنجی زمان نمایش محتواهای جدید و قدیمی

۱۳. Stale-If-Error

دستورالعمل بالا نشان می‌دهد تا زمانی که سرور با خطا روبه‌رو است، کش می‌تواند محتوای قدیمی را به کاربر نشان دهد. منظور از خطای سرور هر وضعیتی از سرور است که منجر به بروز خطای ۵۰۰، ۵۰۲، ۵۰۳ یا ۵۰۴ شود.

هدر Cache Control چیست؟
نمایش محتوای قدیمی درصورت وجود خطا در سرور

۱۴. Immutable

معنای Immutable در Cache-Control چیست؟ این دستورالعمل نشانگر ثابت ماندن محتوای کش شده است. بهترین راهکار برای کش کردن محتوای ثابت یا URL‌های بدون تغییر، استفاده از این دستورالعمل است. زمانی که کاربر، مرورگر را بارگذاری می‌کند، مرورگر درخواست مشروط خود را برای اعتبارسنجی به سرور ارسال می‌‌کند. دستورالعمل Immutable، نشان می‌دهد باوجودی‌که محتوا جدید بوده، تغییرناپذیر است. به‌این‌ترتیب، از درخواست شرطی و اعتبارسنجی غیرضروری به سرور جلوگیری می‌کند.

باوجودی‌که دستورالعمل‌های هدر کنترل کش به‌ حروف بزرگ و کوچک حساس نیستند، اما بهتر است از حروف کوچک استفاده کنید. زیرا در برخی موارد، دستورالعمل‌هایی با حروف بزرگ قابل اجرا نخواهد بود. همچنین دستورات مختلف را می‌توانید با علامت «,» از هم جدا کنید.

برای آشنایی با آموزش صفر تا صد مدیریت نیم‌سرورها در Cloudflare مقاله زیر را از دست ندهید.

افزودن DNS در کلودفلر

استفاده از Cache Control در وب سرورهای مختلف

در استفاده از Cache Control، نیاز است دستورالعمل هدرهای مربوط به محتوا را ارسال کنیم. اساس کار، استفاده از فایل htaccess. است. مثال زیر را درنظر بگیرید:

Header set Cache-Control "max-age=2628000, public"

مشکلی که کد بالا دارد، این است که هرچیزی را کش می‌کند. این یعنی توانایی کش کردن فایل‌های مختلف را به‌صورت جداگانه ندارد. برای کش کردن فایل‌های مختلف، ما از دستور زیر استفاده می‌کنیم:

# One month for most static assets

<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">

Header set Cache-Control "max-age=2628000, public"

</filesMatch>

این کد می‌گوید اگر فایل موردنظر یکی از فایل‌های (CSS، jpg، jpeg یا png) بود، آن‌گاه هدر کنترل کش، دستور زیر را اعمال کند:

Header set Cache-Control "max-age=2628000, public

بهترین راه در استفاده از کش کنترل این است باتوجه به نوع وب‌سرور خود نوع هدر Cache Control را تعیین کنید. در ادامه، نحوه پیکربندی هدر Cache Control در وب‌سرور آپاچی و NGINX را بررسی خواهیم کرد.

نحوه پیکربندی هدرهای Cache-Control در آپاچی

درصورتی‌که از وب‌سرور آپاچی استفاده می‌کنید، می‌توانید با اضافه کردن دستورالعمل «fileMatch» در هدر Cache Control استراتژی مختلف کش وب‌سایت را برای فایل‌های مختلف به‌کار بگیرید. برای مثال، می‌توانید کد زیر را در فایل http.conf قرار دهید. البته دسترسی شما به فایل کانفیگ بستگی به شرکت هاستینگ دارد. اگر امکان دسترسی به فایل http.conf را ندارید، کافی‌است دستور موردنظر را در فایل htaccess. قرار دهید:

One year for image files #

<filesMatch ".(jpg|jpeg|png|gif|ico)$">

Public 31536000 Header set Cache-Control "max-age=

</filesMatch>

# One month for css and js

<filesMatch ".(css|js)$">

, public 2628000 " Header set Cache-Control "max-age=

</filesMatch>

در این دستور، همانطور که می‌بینید، با استفاده از filesMatch، به مدت یک سال فایل‌ تصاویر و به مدت یک ماه فایل css و js را با دستورالعمل هدر کش کنترل، ذخیره کردیم. همچنین، برای ذخیره محتوای Static به مدت یک‌سال، می‌توانید کد زیر را در فایل htaccess. قرار دهید.

Cache everything for an year

Header set Cache-Control "max-age=31536000, public"

نحوه پیکربندی هدرهای Cache-Control در NGINX

شیوه پیکربندی NGINX برای Cache-Control چیست؟ برای فعال کردن دستورالعمل Cache-Control در Nginx، دو دستورالعمل اصلی در اختیار دارید:

  • Proxy_Cache_Path
  • Proxy_Cache

دستورالعمل Proxy_Cache_Path مسیر و پیکربندی حافظه پنهان را تعیین کرده و Proxy_Cache آن را فعال می‌کند. برای درک بهتر، دستور زیر را درنظر بگیرید:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g 

 inactive=60m use_temp_path=off;

server {

# ...

location / {

 proxy_cache my_cache;

proxy_pass http://my_upstream;

}

}

در ادامه، هریک از پارامترهایی که در دستور بالا وجود دارد، بررسی خواهیم کرد:

۱. /Path/To/Cache

مسیر دایرکتوری حافظه محلی برای کش کردن است.

۲. Levels

 یک مسیر دوسطحی را در دایرکتوری حافظه تعریف می‌کند. از آن‌جایی که داشتن تعداد زیاد فایل در یک دایرکتوری ممکن است سرعت دسترسی به فایل را کمتر کند، این دستور، یک دایرکتوری دو سطحی برای نگهداری فایل‌ها تعریف می‌کند؛ درنتیجه اگر فایلی باقی ماند، به سطح levels در Nginx منتقل خواهد شد.

۳. Keys_Zone

Keys_Zone هدر Cache Control در Nginx، محلی به‌عنوان حافظه مشترک برای ذخیره کش و متادیتا مانند زمان استفاده است. داشتن یک کپی از Key_Zone در حافظه باعث می‌شود تا Nginx، بدون نیاز به بررسی حافظه، سریعاً یک درخواست HIT یا MISS تشخیص دهد. این دستور، سرعت بررسی و تشخیص Nginx را افزایش می‌دهد.

منظور از Cache Hit درخواستی است که مرورگر برای دریافت محتوا از حافظه کش ارسال کرده و Cache Miss، درخواستی است که مرورگر به سرور اصلی فرستاده و بعد از دریافت پاسخ، محتوا را کش می‌کند.

۴. Max_Size

این پارامتر در هدر Cache Control در Nginx، حداکثر اندازه کش را تعیین می‌کند. در مثال بالا، حداکثر کش ما، ۱۰ گیگابایت است. این پارامتر اختیاری بوده و با تعیین نکردن مقدار حافظه کش، امکان استفاده از تمام فضای موجود در دیسک را خواهید داشت.

۵. Inactive

پارامتر Inactive در هدر Cache Control وب‌سرور Nginx تعیین می‌کند یک فایل چه مدت در حافظه پنهان بدون دسترسی باقی خواهد ماند. در مثال بالا، تعیین Inactive=60m می‌گوید اگر فایلی تا ۶۰ دقیقه بدون درخواست باقی بماند، فارغ از اینکه زمان انقضای کش آن رسیده است یا خیر، از حافظه کش پاک شود. مقدار پیش‌فرض Inactive، مدت ۱۰ دقیقه است.

NGINX ابتدا فایل‌هایی که برای کش درنظر گرفته است، در یک مکان ذخیره موقت تعریف کرده و سپس با دستور Use_Temp_Path=off، تعیین می‌کند که فایل‌ها در دایرکتوری کش قرار گیرند. در استفاده از Cache-Control برای وب‌سرور Nginx، نوع متفاوتی از دستورات را می‌نویسیم.

برای مثال، برای تعیین مدت زمان ماندگاری یا انقضا به‌جای به‌کار بردن Max-Age از دستورالعمل Expires استفاده می‌کنیم. به مثال زیر توجه کنید:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {

expires 365d;

}

در دستور بالا پس از Location، آدرس مسیری که قصد کش کردن آن را داریم، قرار دادیم. آیکون«~*» به معنای تمام مسیرها و پوشه‌ها است. سپس نوع فایل‌های موردنظر برای کش را تعریف کردیم. دستور Expires نیز مدت زمان انقضای کش را مشخص می‌کند. شما می‌توانید با استفاده از پارامترهای هدر Cache Control، دستور کامل‌تری تعریف کنید. برای مثال:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {

 expires 2d;

 add_header Cache-Control "public, no-transform";

}

در مثال بالا، با استفاده از دستور “Header Cache-Control “public، حالت عمومی را برای کش انتخاب کردیم. این یعنی محتوا می‌تواند توسط هر نوع کش ذخیره شود. برای نوشتن دستورالعمل‌های پیچیده‌تر، می‌توانید به وب‌سایت رسمی Nginx مراجعه کنید.

کاربرد Cache Control در CDN

حافظه کش را می‌توان مانند یک درایو لوکال برای سرور درنظر گرفت که موجب می‌شود دسترسی و انتقال اطلاعات سریع‌تر انجام شود. همین موضوع برای CDN‌ها نیز صدق می‌کنند. CDN‌ها برای توزیع سریع محتوا و مصرف بهینه پهنای باند، اطلاعات را به سرورهای پروکسی منتقل می‌کند. به‌طورکلی، از مزیت و کاربرد Cache Control در CDN می‌توان به موارد زیر اشاره کرد:

۱. استفاده از کش کنترل، مدیریت کش را ساده‌تر می‌کند

تگ کردن دستی هر فایل، تغییر دادن کد و مدیریت هدرهای مختلف کش، کار توسعه‌دهندگان وب را سخت‌تر می‌کند. CDN با امکان مدیریت کش در داشبورد کاربرپسند خود این امکان را به مدیران داده تا درصورت دلخواه دستورالعمل‌های هدر Cache Control را تغییر داده یا برای برخی از فایل‌ها غیرفعال کنید.

۲. با کمک الگوریتم یادگیری ماشین، فرایند کش را به‌طور خودکار تنظیم می‌کند

در برخی از CDN‌های پیشرفته، شما می‌توانید هدر Cache Control را بااستفاده از الگوریتم‌های خودکار یادگیری ماشین تعریف کنید؛ درنتیجه محتوا سریع‌تر قابل تشخیص خواهند بود. برای مثال، یک فایل HTML را که در دراز مدت تغییری نکرده است، به‌عنوان تگ استاتیک می‌توان کش کرد تا صفحه سریع‌تر بارگذاری شود. الگوریتم یادگیری ماشین با بررسی وضعیت صفحه، به محض اینکه تغییری در آن ایجاد شود، آن را در دسته محتوای داینامیک طبقه‌بندی می‌کند. این سیاست باعث می‌شود تا فرایند کشینگ بهینه و سرعت دریافت محتوا سریع‌تر شود.

۳. به‌کمک سرورهای پروکسی‌، حافظ کش مرورگر را افزایش می‌دهد

 مرورگر پس از اولین بازدید شما از سایت، به‌طور خودکار، فرایند کش کردن صفحات سایت را آغاز می‌کند. CDN با کمک سرورهای پروکسی‌ و استفاده از کش کنترل سرعت بارگذاری صفحات را افزایش می‌دهد. با این کار، این اطمینان را به کاربر می‌دهد باتوجه به موقعیت جغرافیایی که کاربر قرار دارد، از نزدیک‌ترین سرور، کپی از سایت را به او نمایش خواهد داد. مانند زمانی که قصد دارید به‌طور آنلاین از اسنپ مارکت خرید کنید و اسنپ نزدیک‌ترین فروشگاه‌ها را به شما نشان می‌دهد.

برای آشنایی با نحوه انجام تنظیمات کشینگ در کلودفلر به زبان ساده مقاله زیر را بخوانید.

تنظیمات Caching در کلودفلر

جمع‌بندی

Cache-Control چیست؟ پاسخ این سوال را به‌طور کامل در این مقاله بررسی کردیم. هدر Cache Control نوعی هدر HTTP است که مطابق با رفتار کش مرورگر کاربر عمل کرده و شما می‌توانید به کمک آن کنترل دقیق‌تری روی کش سایت خود داشته باشید. همچنین نحوه استفاده از Cache Control را در وب‌سرورهای آپاچی و Nginx بررسی کردیم. امیدواریم این مقاله به شما در استفاده از کش کنترل، پیکربندی و شناخت مفهوم آن کمک کرده باشد. درصورتی‌که در این زمینه نیاز به راهنمایی بیشتر دارید، سوالاتتان را می‌توانید در انتهای همین مقاله بنویسید تا کارشناسان پارس پک راهنمایی‌تان کنند.

توجه کنید!

مهندسان و متخصصان پارس پک با CDN حرفه‌ای امکان استفاده از Cache Control و اجرای راحت Caching را فراهم کرده‌اند. استفاده از CDN با کاهش فاصله بین سرور و کاربر باعث افزایش سرعت بارگذاری وب‌سایت شما شده و هم‌زمان استفاده از پهنای باند کم می‌شود، ئس علاوه بر جلب رضایت مخاطب، هزینه‌هایتان را نیز کاهش می‌دهید. حتی با استفاده از پلن رایگان CDN پارس پک می‌توانید با ترافیک و درخواست‌های نامحدود داخلی و خارجی، از یک Caching حرفه‌ای بهره‌مند شوید.

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

۱. Cache-Control چیست؟

هدر Cache Control یک هدر HTTP برای کنترل، مدیریت و درخواست کش مرورگر به سرور است. با پارامترهای مختلف از جمله تعیین حداکثر زمان انقضا و ماندگاری هدر کنترل کش می‌توانید مدیریت دقیقی روی کش داشته باشید.

۲. چرا استفاده از کش کنترل اهمیت دارد؟

هدر کنترل کش وب‌سایت موجب عملکرد بهینه سایت شده و پهنای باند و حجم دیتای بین سرور و مرورگر کاربر را کاهش می‌دهد.

۳. Max-Age در Cache-Control چیست؟

Cache-Control: Max-Age حداکثر زمان ماندگاری و انقضای کش براساس ثانیه است.

۴. منظور از Max Age 3600 Cache-Control چیست؟

Max Age 3600 به این معنا است که پاسخ درخواست را می توان به‌مدت ۶۰ دقیقه یا ۳۶۰۰ ثانیه آینده استفاده کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.