روش Cache-Control Header
در ابتدای این مقاله هم گفتیم که اگر میخواهید آپشنهای بیشتری را در هنگام کش کردن توسط مرورگر تنظیم نمایید میتوانید از روش Cache-Control Header استفاده نمایید. در واقع این روش نحوه کش کردن و مدت زمانی که مرورگر باید فایلها را در کش نگه دارد را مشخص مینماید. مرورگر زمانیکه یک فایل را دانلود میکند، HTTP Header آن را نیز بررسی میکند، اگر Cache-Control Header را بخواند، آن فایل را کش خواهد کرد.
بعنوان مثال :
اگر مرورگر دستور کش را برای 24ساعت دریافت نماید، آن فایل را تا 24 ساعت در کش سیستم نگهداری میکند و اگر تا 24 ساعت آینده شما مجددا به آن سایت مراجعه نمایید آن فایل بصورت کش شده و بدون نیاز به دانلود باز خواهد شد. اما اگر بعد از 24 ساعت مجددا مراجعه نمایید مرورگر باید فایل را مجددا دانلود نماید. نمونه بارز از این مثال لوگوی سایت شما میتواند باشد. لوگو در تمام صفحات ثابت است و کاربر اگر یکبار وارد سایت شما شود و چندین صفحه از سایت شما را ببیند، لوگو فقط یکبار، برای بار اول دانلود میشود و برای مابقی صفحات لوگو بصورت کش شده باز خواهد شد.
به کد زیر توجه کنید:
# 1 Month for most static assets
Header set Cache-Control “max-age=2592000, public”
کد بالا تنظیمات Cache-Control Header است که به شکل HTTP Header ارسال میشود. و اعمال این کد بستگی به نوع فایلهایی که تعریف میکنیم، دارد.
حال به بررسی خط به خط دستور بالا میپردازیم
خط اول
در واقع یک یادآوری برای خود شماست و یک تشریح از دستورات است و چون با # شروع شده است عملا توسط .htaccess نادیده گرفته میشود.
این خط کامنتی برای آگاهی و یادآوری برای اسفاده کننده از کد بالا است.
خط دوم
اما بخش اصلی کد ما است. در این میگوییم که “اگر فایلها با فرمتهای مورد نظر ما بودند یک سری عملیات روی آنها اتفاق بیفتد”. در واقع با این دستور عملیات کش فقط برای این نوع فایلها صورت میگیرد. بعنوان مثال اگر تمایل دارید که فایلهای png کش نشوند میتوانید نوع فایل آن را از لیست حذف نمایید تا مرورگر این نوع فایل را کش نکند. طبیعتا اگر میخواهید یک نوع فایل توسط مرورگر کش شود فقط کافیست فرمت و نوع آن فایل را به لیست اضافه نمایید.
خط سوم
اما موضوع مقاردهی یا تعیین زمان ماندگاری فایلها در کش مرورگ است. این دستور بصورت HTTP در مرورگر فراخوانی میشود که در اینجا max-age=604800 است. زمان برحسب ثانیه است و عدد 604800 نشان دهنده 1هفته معادل 604800 ثانیه است. بنابراین با این دستور شما به مرورگر گفتید که فایلها را بمدت یک هفته در کش خود ذخیره نماید و بعد از یک هفته مجددا دانلود نماید.
مقادیر رایج در مقداردهی، موارد زیر هستند:
یک دقیقه: MAX-AGE=60
یک ساعت: MAX-AGE=3600
یک روز: MAX-AGE=86400
یک هفته: MAX-AGE=604800
یک ماه: MAX-AGE=2628000
یک سال: MAX-AGE=31536000
انواع دستورات در Cache-Control Header
بطور کلی 3 نوع دستور برای Cache-Control Header داریم. دستور اول : PUBLIC – دستور دوم : PRIVATE – دستور سوم : NO-STORE
دستور اول PUBLIC :
در واقع همانطور که از نام آن پیداست این روش عمومیاست. یعنی اگر شما دستور کش را به مرورگر ارسال نمایید همهی بازدید کنندگان از این قابلیت کش در مرورگر استفاده میکنند. معمولا از این روش برای کش کردن فایلها استفاده میشود.
دستور دوم PRIVATE :
دستور PRIVATE در واقع به معناس کش شدن برای یک یا چند کاربر خاص است. فرض کنید شما وارد حساب کاربری خود در توییتر شدهاید. در نظر بگیرید اگر شما وارد حساب کاربری خود شوید، تمام فایلهای صفحه شما فقط و فقط برای شخص شما کش میشود و اگر شخصی صفحه شما را بازدید کند، همهی فایلهای آن صفحه برای او کش نمیشود، لذا همانطور که از نام PRIVATE مشخص است، در این روش عمل کش کردن بصورت شخصی انجام میشود.
دستور سوم NO-STORE :
این دستور بیانگر این است که به مرورگر اجازه نمیدهد که فایلها را کش نماید. تحت هیچ شرایطی کش نمیکند.
خط چهارم
و در آخر نیز دستور را به اتمام میرساند.