Cache Control چیست؟ کنترل کش یکی از ویژگیهای مهم در وب است که نقش موثری در بهینهسازی عملکرد و سرعت بارگیری صفحات وب دارد.
در واقع، هنگامی که کاربر درخواستی برای بازدید از یک صفحه وب ارسال میکند، مرورگر این صفحه را از سرور دریافت و آن را در حافظه موقت خود ذخیره میکند تا درصورت درخواست مجدد همان صفحه، بتواند آن را خیلی سریع بازیابی کند. بدون اینکه نیازی به دریافت مجدد اطلاعات از وب سرور باشد.
در این راستا، Cache Control از سربرگها و هدرهای HTTP استفاده میکند تا دستورالعملهایی را برای مرورگرها و سرورها دریافت کند.
Cache Control یک هدر حافظه پنهان HTTP است که شامل مجموعهای از پارامترها برای تعریف رفتار کش مرورگر در درخواستهای کاربر و پاسخهای سرور است.
تنظیمات Cache Control میتواند شامل دستورات مربوط به نگهداری حافظه کش مانند max-age و no-cache باشد. این دستورات به وب سایتها اجازه میدهد که تعیین کنند چه منابعی قابل نگهداری در حافظه کش هستند و چه منابعی باید هر بار بازبینی شوند.
همچنین مشخص میکند که چه زمانی، برای چه مدت و چگونه یک پاسخ باید در حافظه پنهان ذخیره شود.
با استفاده از کنترل کش، میتوان به بهبود سرعت بارگیری وبسایت، کاهش بارسرور و بهبود تجربه کاربران کمک کرد. در این مطلب، نحوه استفاده از Cache Control و تاثیر آن در بهبود عملکرد وبسایتها را بررسی خواهیم کرد. همچنین، به توضیح مفاهیمی همچون کش مرورگر، هدرهای HTTP، هدرهای Cache Control و مزایای آن خواهیم پرداخت.
کش مرورگر چیست
کش مرورگر فرآیندی است که در آن یک مرورگر منابع وب سایت را ذخیره میکند تا آنها را در طول درخواست بعدی مشتری به سرعت بارگیری کند.
هنگامی که شخصی برای اولین بار از وب سایت شما بازدید میکند، مرورگر وب باید تک تک فایلها را درخواست و دانلود کند تا صفحه موردنظر شما ارائه شود.
به عنوان مثال، وقتی یک صفحه از وب را با یک تصویر پس زمینه بارگیری کنید، تصویر در کش مرورگر شما ذخیره میشود. در بازدید بعد، متوجه میشوید که صفحه سریعتر بارگذاری میشود و تاخیر کاهش مییابد، زیرا مرورگر مجدد تصویر را از وب سرور درخواست نمیکند و از فایلهای محلی بارگیری میکند.
به همین دلیل است که شما معمولاً «leverage browser caching» را به عنوان یک توصیه رایج در ابزارهایی مانند GTmetrix و Pingdom مشاهده میکنید.
برای فعال کردن کش مرورگر، باید وب سرور خود را به گونهای پیکربندی کنید که به مرورگرهای بازدیدکننده بگوید چه نوع فایلهایی را ذخیره کنند و چه مدت آنها را قبل از بارگیری مجدد ذخیره کنند.
به عنوان مثال، میتوانید سرور خود را طوری پیکربندی کنید که فایلهای JPEG را برای یک سال و فایلهای PNG را فقط برای یک ماه ذخیره کند.
یک چارچوب زمانی مشخص وجود دارد که به عنوان Time to Live (TTL) شناخته میشود و پس از آن منبع ذخیره شده در فایلهای محلی منقضی میشود.
اگر صفحه را پس از انقضای TTL بارگیری کنید، مرورگر باید درخواست دیگری را به وب سرور ارسال کند و یک نسخه جدید از منبع را دریافت کند. TTL برای هر مرورگر و سرور در هدرهای HTTP مشخص شده است.
اساسا، شما تاریخ انقضا را برای مدت زمانی که مرورگرهای بازدیدکنندگان باید محتوای خاصی را ذخیره کنند، تنظیم میکنید.
دلیل تنظیم تاریخ انقضا این است که مطمئن شوید بازدیدکنندگان شما همچنان جدیدترین نسخه صفحه شما را دریافت میکنند.
با تعیین تاریخ انقضا، میتوانید اطمینان حاصل کنید که بازدیدکنندگان بهطور دورهای منابع مربوطه را دوباره دانلود میکنند تا از یک تجربه بهروز اطمینان حاصل کنند.
هدرهای HTTP چیست
HTTP headers مجموعهای از پارامترهای درخواست شرطی هستند که حاوی اطلاعات اضافی در مورد ارتباط بین مشتری و سرور میباشند.
شبکه جهانی وب بر اساس پروتکل انتقال ابرمتن (Hypertext Transfer Protocol) عمل میکند که ترکیب تمام ارتباطات بین کلاینتها و سرورها را مشخص میکند.
تعدادی هدر برای مشخص کردن انواع مختلف اطلاعات در ارتباطات مشتری و سرور وجود دارد.
برای درخواستها، هدر معمولا حاوی اطلاعاتی در مورد منبع درخواست شده، مرورگر مشتری و فرمتهای دادهای است که مشتری میپذیرد.
به طور کلی، هدرهای ذخیره HTTP را میتوان به موارد زیر دسته بندی کرد.
- General headers
- Request headers
- Response headers
- Entity headers
هدرهای عمومی
General headers، اینها هدرهای ذخیره HTTP هستند که میتوانند برای پیامهای درخواست و پاسخ استفاده شوند، اما برای محتوای پیام اعمال نمیشوند.
Cache-Control یکی از این هدرها است. موارد دیگر عبارتند از Date که تاریخ و زمان پیام را مشخص میکند و Connection که مشخص میکند آیا اتصال شبکه پس از تراکنش باز میماند یا خیر.
هدرهای درخواست
Request headers، هدرهایی هستند که در درخواست HTTP استفاده میشوند. آنها حاوی اطلاعات زیادی در مورد منبع دریافت شده یا در مورد درخواست مشتری هستند.
هدرهای پاسخ
Response headers، شامل اطلاعات اضافی در مورد پاسخ HTTP است. مثالها عبارتند از Age، مدت زمانی را که شی در حافظه پنهان پراکسی بوده است و Location که نشاندهنده URL برای هدایت صفحه به آن است را مشخص میکند.
هدرهای موجودیت
برخلاف سایر هدرها، Entity headers حاوی اطلاعاتی در مورد محتوا و بدنه پیام هستند. آنها را میتوان در درخواستهای HTTP یا پیامهای پاسخ HTTP استفاده کرد.
مثالها عبارتند از Content-Length که اندازه موجودیت-بدنه را بر حسب بایت مشخص میکند و Content-Language که زبان در نظر گرفته شده برای مخاطب را توصیف میکند.
هدر Cache Control چیست
Cache-Control یک هدر HTTP است که برای کنترل کش کردن محتوا در HTTP استفاده میشود. این هدر کنترل میکند که برنامهها و مرورگرها نحوه استفاده از کش محتوا را تنظیم کنند. با استفاده از این هدر، سرور میتواند دستورات کش را برای مرورگر و سرورهای واسط تعیین کند.
در واقع هدرهای کنترل کش، شامل اطلاعاتی در مورد هر عملی که باید با حافظه نهان انجام شود مانند نحوه ذخیره سازی، زمان ذخیره سازی و… میباشد.
آنها اساساً دستورالعملهایی هستند که از جفتهای کلید-مقدار جدا شده توسط دو نقطه تشکیل شدهاند. “کلید” چیزی است که در سمت چپ کولون (:) ظاهر میشود و در این مورد همیشه کنترل کش است.
بیشتر بدانید : نصب و استفاده از ویرایشگر Vim در لینوکس سرور
مقدار هدر در سمت راست کولون ظاهر میشود. برای مثال، «Cache Control : max-age» یکی از این دستورالعملها است.
دستورالعملهای کنترل حافظه پنهان در صورتی که توسط کلاینت در درخواست HTTP استفاده شوند، دستورالعملهای درخواستی در نظر گرفته میشوند و اگر توسط سرور در پاسخ HTTP استفاده شوند، دستورالعملهای پاسخی محسوب میشوند.
در ادامه، شما را با برخی از رایجترین دستورالعملهای کنترل حافظه پنهان آشنا خواهیم کرد.
کنترل کش max-age
کنترل کش max-age یک شاخص در هدرهای HTTP است که زمان اعتبار کش را برای منابع در مرورگر تعیین میکند.
این شاخص به صورت ثانیه مشخص میشود و نشان میدهد که چقدر نسخه فعلی یک منبع معتبر است و در حافظه کش مرورگر نگهداری شود.
به عنوان مثال، max-age=90 به این معنی است که یک پاسخ HTTP قبل از اینکه بتواند برای استفاده مجدد در دسترس باشد، تا ۹۰ ثانیه آینده به عنوان یک کپی ذخیره شده در مرورگر باقی میماند.
اگر دسترسی مجددی به منبع در همان بازه زمانی انجام شود، مرورگر از حافظه کش استفاده میکند و به سرور درخواست مجددی ارسال نمیکند. کاربردهای کنترل کش max-age شامل کاهش زمان لود صفحات و کاهش بار سرور میشود.
S-Maxage
s-maxage شبیه دستورالعمل max-age است، اما “s” مخفف shared as در حافظه پنهان مشترک است. این مربوط به شبکههای تحویل محتوا (CDN) و سایر حافظه های پنهان واسطه است. این دستورالعمل max-age را لغو میکند و در صورت وجود فیلد سرصفحه منقضی میشود.
کش کنترل no-cache
این دستورالعمل به این معنی است که نسخههای ذخیره شده منبع درخواستی را نمیتوان بدون بررسی اولیه برای مشاهده نسخه بهروزرسانیشده استفاده کرد. این معمولا با استفاده از ETag انجام میشود.
ETag یکی دیگر از هدرهای HTTP است که حاوی یک نشانه منحصر به فرد برای نسخه منبع در زمان درخواست آن است. هر زمان که منبع به روز شود، این نشانه در سرور مبدا تغییر میکند.
وقتی کاربر به صفحهای با منبع «بدون کش» باز میگردد، کاربر همیشه باید به سرور مبدا متصل شود و ETag موجود در منبع ذخیرهشده را با یک منبع در سرور مقایسه کند.
اگر ETag ها یکسان باشند، منبع ذخیره شده در حافظه پنهان در اختیار کاربر قرار می گیرد. اگر نه، به این معنی است که منبع به روز شده است و مشتری باید یک نسخه جدید را دانلود کند تا در اختیار کاربر قرار دهد.
این فرآیند تضمین میکند که کاربر همیشه به روزترین نسخه آن منبع را بدون نیاز به دانلودهای غیر ضروری دریافت میکند.
کش کنترل no-store
با این دستورالعمل، نمیتوان پاسخ HTTP را ذخیره و مجددا استفاده کرد. در عوض، منبع باید درخواست شود و هر بار یک پاسخ کامل از سرور اصلی دانلود میشود. این دستورالعمل معمولاً برای منابعی محفوظ است که حاوی دادههای بسیار حساس هستند، مانند اطلاعات حساب بانکی.
no-transform
هنگامی که منابع در سرور کش ذخیره میشوند، گاهی اوقات پروکسیهای میانی میتوانند تغییراتی در این داراییها ایجاد کنند.
به عنوان مثال، آنها میتوانند فرمت تصاویر و فایلها را به منظور صرفه جویی در فضا و بهبود عملکرد تغییر دهند. اگر قرار باشد دارایی با نهاد اصلی یکسان بماند، این امر میتواند مشکلاتی ایجاد کند.
همچنین نمیتوانند بدنه پاسخ Content-Encoding، Content-Range یا Content-Type را ویرایش کنند.
Public Cache-Control
کنترل کش عمومی، به این معنی است که منبع را میتوان توسط هر واسطهای بین سرور و کلاینت، مانند CDN و سرور پروکسی، کش کرد.
Private Cache-Control
کنترل کش خصوصی، به این معنی است که این منبع فقط برای کاربر و هرگز توسط یک عامل واسطه مانند CDN یا یک پروکسی قابل ذخیره سازی نیست.
اینها اغلب منابع حاوی دادههای خصوصی هستند، مانند وب سایتی که اطلاعات شخصی کاربر را نمایش میدهد.
CDN Cache Control چیست
CDNها از تکنیکهای مختلفی برای سرعت بخشیدن به تحویل محتوا مانند تصاویر و سایر فایلهای رسانهای روی سرورهای نزدیک به محل اصلی کاربر نهایی استفاده میکنند.
با استفاده از هدرهای کنترل کش، توسعه دهندگان وب میتوانند کنترل بیشتری بر نحوه ارائه منابع از یک CDN داشته باشند و اطمینان حاصل کنند که کاربران نسخه مورد نظر یک منبع را دریافت میکنند.
در یک شبکه تحویل محتوا (CDN)، زمانی که کاربر درخواستی را ارسال میکند، CDN بررسی میکند که آیا آخرین نسخه از منبع ذخیره شده در حافظه کش خود را دارد یا خیر. اگر این کار را کرد، به جای درخواست آن از سرور اصلی، کپی ذخیره شده را به مشتری برمیگرداند.
CDN از هدرهای کنترل کش استفاده میکند تا مشخص کند که یک منبع باید چه مدت در حافظه پنهان ذخیره شود و اینکه آیا باید قبل از استفاده مجدداً اعتبارسنجی شود یا خیر.
به عنوان مثال، هدر Cache-Control را میتوان برای تعیین اینکه یک منبع باید برای مدت زمان مشخصی کش شود یا اینکه اصلاً نباید کش شود، استفاده میشود.
ابر آسیاتک با ارائه CDN رایگان، علاوه بر افزایش امنیت سایت مشترکین، به افزایش سرعت بارگذاری و نمایش صفحات وب کمک کرده و با پخش صحیح درخواست کاربران بر روی چندین سرور، ترافیک وبسایتها را چندین برابر مینماید.
مزایای Cache Control چیست
Cache-Control یک هدر استاندارد در HTTP است که نقش مهمی در بهینهسازی و سرعت بخشیدن به فرآیند تحویل محتوا به کاربر دارد. اهمیت Cache-Control به دلیل موارد زیر است:
بهینهسازی مصرف پهنای باند
با استفاده از Cache-Control، سرور میتواند نوع محتواها و زمان بهروزرسانی آنها را مجدداً تعیین کند. این کار موجب کاهش تعداد درخواستها به سرور و در نتیجه، کاهش مصرف پهنای باند میشود.
سرعت بخشیدن به لود صفحه
مرورگر میتواند محتواها را از حافظه پنهان خود بارگیری کند و نیازی به ارسال درخواست به سرور نداشته باشد. این کار باعث سرعت بخشیدن به لود صفحه و بهبود تجربه کاربر میشود.
کاهش بار سرور
سرور میتواند کشهایی از محتواها ایجاد کند و نیازی به ایجاد محتوای تکراری نداشته باشد. این کار باعث کاهش بار بر سرور و هزینههای سرویس دهی میشود.
بهینهسازی عملکرد و سرعت وبسایت
استفاده صحیح از Cache-Control میتواند به سرعت بارگیری صفحات وب کمک کند. با استفاده از دستورات مانند max-age و must-revalidate میتوان نشان داد که یک منبع میتواند در حافظه نگهداری شود و یا باید پنجره زمانی برای بارگیری مجدد تعیین شود. این کش سازی منجر به کاهش هزینه بارگیری منابع تکراری و حجم دادههای ارسالی شده بین مرورگر و سرور میشود.
مدیریت دادههای مخابره شده
Cache Control به سرور اجازه میدهد تا کنترل داشته باشد که آیا مرورگر باید یک منبع را در حافظه نگهداری کند و یا همواره به سرور برای بارگیری مجدد درخواست کند. این کنترل به کاربر امکان میدهد تا از محافظت خود در برابر تغییرات نامطلوب در منابع فعلی و اطمینان از دریافت آخرین نسخهها استفاده کند.
جمع بندی
امروزه، با توسعه روزافزون استفاده از اینترنت و وبسایتها، بهینهسازی عملکرد و سرعت بارگذاری صفحات وب امری بسیار مهم و حیاتی شده است. یکی از مکانیسمهای مورد استفاده برای بهبود عملکرد وبسایتها و کاهش زمان بارگذاری صفحات، استفاده از Cache Control است. کش کنترل ابزاری است که در پروتکل HTTP استفاده میشود و به وب سرورها امکان میدهد که کش دادهها را کنترل کنند. با استفاده از Cache Control، وب سرور برخی از دادهها را در کش ذخیره میکند تا درخواستهای آینده را بدون بارگذاری دوباره از منبع اصلی اطلاعات بهصورت سریعتر پاسخ دهد.
دیدگاهتان را بنویسید