در IIS 7.0 ویژگی با عنوان خروجی کش (Output Caching) وجود دارد ، که می تواند محتوای PHP داینامیک را در حافظه داخلی کش نماید. نتیجه این ویژگی می تواند ارتقاء فعالیت های سایت باشد ، و از آنجا که از اسکریپت برای تولید خروجی داینامیک استفاده می شود ، نیازی به پردازش برای هر درخواست وجود ندارد. Cache می تواند براساس خروجی که مقدار رشته پرس و جو (Query) دارد (مانند هدرهای HTTP که از طرف کاربر به سرور فرستاده می شود.) ، متفاوت باشد.
چه زمانی نیاز به استفاده از Output Caching است؟
محتوای وب به دو دسته اصلی تقسیم می شود : محتوای استاتیک و داینامیک.
- محتوای استاتیک از درخواستی به درخواست دیگر تغییری نمی کند. محتوایی که به مرورگر برگردانده می شود همیشه یکی است. مانند فایلهای HTTP,JPG,GIF.
- خروجی محتوای داینامیک با هر درخواست تغییر می کند. مانند محتوای فایلهای PHP,ASP.NET.
یک صفحه ASP.NET داینامیک را در نظر بگیرید که یک Query از دیتابیس را اجرا می کند. اگر جداول پایگاه داده ها تغییر زیادی نداشته باشند ، احتیاجی به اجرای اینQuery با هر درخواست نیست.
IIS به صورت خودکار محتواهای استاتیک را تا زمانیکه درخواست تغییری نداشته باشد ، در حافظه داخلی کش می کند. همچنین هنگامی که فایلها بروزرسانی می شوند ، تغییرات را شناسایی میکند.
Output Caching در IIS 7 محتواهای نیمه داینامیک را مد نظر قرار می دهد و این امکان را فراهم می کند تا اطلاعاتی که در Cache برای محتواهای استاتیک ذخیره شده است برای درخواست های داینامیک نیز مورد استفاده قرار گیرد. این عمل به منظور کاهش ارسال درخواست ها به سرور می باشد.
تعیین خط مشی های Cache :
IIS دو نوع از خط مشی های Cache را پشتیبانی می کند :
varyByQuerystring : در این نوع آدرس ها یک شکل هستند ، اما مقدار رشته Query متفاوت است.
varyByHeaders : در این نوع اساس Cache در هدرهای HTTP که از سمت کاربر به سمت سرور فرستاده می شود ، می تواند متفاوت باشد.
از بین بردن Cache :
داده ها اغلب توسط محتوای داینامیک ، تغییر می کنند و باید Cache را تخلیه کنید. همچنین باید اجازه بازیابی و Cache مجدد داده های جدید را صادر نمایید. توجه داشته باشید ، حتی اگر داده ها هر ثانیه تغییر کنند ، این روش باز هم می تواند برای کش کردن داده ها مفید باشد. یک سایت ممکن است در هر ثانیه صدها درخواست دریافت کند ، و کش کردن موجب کاهش درخواست های ارسالی به دیتابیس می شود.
پیکربندی ارزش دهی کش :
حتی اگر Output Caching را فعال نمایید ، IIS 7.0 بلافاصله یک درخواست را Cache نمی کند. باید چندین مرتبه درخواست ارسال شود ، تا IIS 7.0 درخواست با ارزش بودن Cache را بررسی نماید. ارزش دهی Cache می تواند توسط بخش ServerRuntime که در لینک زیر جزئیات آن شرح داده شده است ، پیکربندی شود.
http://msdn.microsoft.com/en-us/library/ms690574
دو خاصیت، ارزش دهی Cache را تعیین می کند :
- frequentHitTimePeriod (مدت زمان تکرار بازدید)
- frequentHitThreshold (محدودیت تکرار بازدید)
یک درخواست زمانی Cache می شود ، که بیش از مقدار تعیین شده برای تگ <frequentHitThreshold> ، درخواستی برای یک آدرس قابل کش با زمان تعیین شده در تگ <frequentHitTimePeriod> ارسال شود.
تنظیمات پیش فرض برای تگ <frequentHitTimePeriod> ، ۱۰ ثانیه و برای تگ <frequentHitThreshold> ، ۲ ثانیه می باشد.
پیکربندی Output Caching در IIS 7.0 :
- از منوی Start ، زیرمنوی Administrative Tools و سپس گزینه Internet Information Services (IIS) Manager را انتخاب کنید.
جهت نصب و اتصال به IIS می توانید از لینک زیر استفاده نمایید :
http://support.iranhost.com/KB/a153/iis.aspx?KBSearchID=5245
- پس از ورود به محوطه کاربری ، گزینه Output Caching را انتخاب نمایید.
- در سمت راست صفحه در بخش Actions ، برروی گزینه Add کلیک کنید. در این قسمت می توانید موارد مربوط به Output Caching را اضافه نمایید.
- در فیلد File Name Extension پسوند فایل مورد نظر (به عنوان مثال .php) را وارد نمایید. در صورتیکه می خواهید کلیه پسوندها را تعیین نمایید باید در این قسمت از علامت (*) استفاده نمایید.
اگر تمایل دارید تنظیمات انجام شده در سمت کاربر صورت پذیرد ، می توانید از گزینه User-mode Caching استفاده نمایید و در صورتیکه می خواهید تنظیمات در سمت سرور صورت پذیرد از گزینه Kernel-mode caching استفاده نمایید.
در قسمت File Cache Monitoring تنظیمات به صورت زیر می باشد :
Using file change notifications : در صورتیکه این گزینه را انتخاب نمایید ، فایلهای مورد نظر تا زمانی که تغییراتی نداشته باشند در Cache باقی می مانند.
At time intervals : در صورتیکه این گزینه فعال باشد ، بسته به زمانی که در این فیلد تنظیم می نمایید فایل های مورد نظر در Cache باقی می مانند. این فیلد توسط سه پارامتر (hh:mm:ss) ساعت ، دقیقه و ثانیه تنظیم می شود.
Prevent all caching : در صورتیکه این گزینه را فعال نمایید ، IIS اجازه ذخیره شدن فایل های مورد نظر درCache را نمی دهد.
Advanced : این گزینه فقط در قسمت User-mode caching وجود دارد و در صورتی که از این قسمت استفاده نمایید فعال می باشد.
- برروی دکمه Advanced کلیک کنید. در پنجره ای که باز می شود با انتخاب گزینه Query string variable(s) می توانید ، متغیرهای رشته پرس و جو را تعریف کنید تا عمل Cache براساس آنها انجام گیرد. همچنین با انتخاب گزینه Headers می توان با تعریف نمودن هدرهای مختلف از قبیل زبان ، نوع کاراکترها و … عمل Cache انجام گیرد.
پیکربندی Output Caching توسط فایل Web.config :
شما می توانید ویژگیهای Cache را در فایل Web.config که در سیستم لوکال و یا در فولدر ریشه هاست موجود می باشد ، پیکربندی نمایید. در زیر نمونه ای از تنظیمات لازم برای یک فایل با پسوند ASP را مشاهده می کنید. در این تنظیمات مقدار رشته پرس و جو برابر با “*” و فاصله زمانی ۱ ثانیه در نظر گرفته شده است.