کاهش زمان بارگذاری صفحات وب توسط ماژول Compression در IIS 7.5
فشرده سازی صفحات وب (HTTP) تکنیکی است که توسط مرورگرها و وب سرورها پشتیبانی می شود. اگر این تکنیک در دو سمت سرور و مرورگرها رعایت شود ، بطور خودکار حجم دانلود کدهای JAVA – CSS – و HTML را ۵۰ تا ۹۰ درصد کاهش خواهد داد. این ویژگی در تمام مرورگرها بطور پیشفرض فعال می باشد اما در سمت سرور غیر فعال است و باید فعال شود. [irp posts=”۲۹۴۹″ name=”زبان HTML چیست و چه کاربردی دارد + معرفی ویرایشگر HTML”]
با وجود اینکه استفاده از فشرده سازی ، مقدار پهنای باند مصرفی و هزینه آن را بسیار کاهش میدهد و حال اینکه به زمان زیادی نیز برای تنظیمات آن نیازی نیست ولی هنوز بسیاری از سایت ها از این تکنیک استفاده نمی کنند. این تکنیک علاوه بر کاهش پهنای باند مصرفی توسط سرور ، به کاربران این امکان را میدهد تا سایتها را در کمترین زمان بار گذاری نمایند. این ویژگی بهترین راهکار برای سایت های دارای نسخه موبایلی می باشد. فشرده سازی صفحات وب در ویندوز توسط IIS و در لینوکس توسط Apache انجام می شود.
از نقاط ضعفی که این تکنیک دارد این است که هنگام عملیات فشرده سازی ، مصرف CPU سرور افزایش می یابد. افزایش بار CPU سرور باعث می شود تا زمان لود شدن صفحات برای کاربران افزایش یابد. هنگامی که سایت بزرگتر و مشهورتر می شود، کاربران شما نیز افزایش یافته و دیگر سرورهای قدیمی جوابگوی این بار ترافیک نخواهد بود . برای جلوگیری از افزایش بار CPU نکات زیر را حتما مد نظر داشته باشید:
فایل هایی که بصورت استاتیک هستند را حتما فشرده نمایید و این درجه را حتما در کمترین حالت تنظیم نمایید. از این تکنیک برای صفحات دینامیک استفاده ننمایید . تعداد فایل تایپ هایی که باید فشرده شوند ر ا کاهش دهید و فشرده سازی را برای یک یا دو سایت دیگر که برروی همان سرور هستند را لغو نمایید.
برای بهینه تر نمودن کارایی سرور از Pre-Compression استفاده نمایید ، این ویژگی این امکان را به شما میدهد تا فایل های استاتیک یک بار فشرده و در کش سرور نگهداری نمایید. در حالیکه فایل های دینامیک با هر در خواست از سمت کاربر فشرده می شوند .Pre-Compression از تکرار فشرده سازی فایل های استاتیک جلوگیری می نماید و باعث کاهش مصرف CPU شده و زمان پاسخ دهی را نیز کاهش میدهد. در برخی نرم افزار ها ممکن است Pre-Compression بصورت اتوماتیک انجام نشود وشما مجبور شوید پس از هر بروز رسانی به صورت Manual فایل ها را فشرده نمایید.در IIS این امر کاملا خودکار بوده و نیازی به بررسی توسط مدیر شبکه نیست.
برخی کاربران از مرورگرهایی استفاده می کنند که قابلیت استفاده از Compression را ندارند. در این مواقع هنگام ارسال درخواست HTTP ، سرور هدر مربوطه را (HTTP-Accept-encoding) بررسی می نماید و برای آنها سایت را بصورت Uncompressed نمایش میدهد. در IIS دو نوع فشرده سازی مورد استفاده قرار می گیرد ، فشرده سازی استاتیک و دینامیک.
فشرده سازی استاتیک به این ترتیب عمل می کند که فایل ها را در یک مسیر از قبل تعیین شده بصورت فشرده ذخیره می نماید و هرگاه آن فایل فراخوانی گردد ، برای کاربر ارسال می کند. مشخصه های staticCompressionEnableCpuUsage و staticCompressionDisableCpuUsage در IIS نشان دهنده اینست که عملیات فشرده سازی براساس فایل و یا مصرف CPU باشد. برای فشرده سازی استاتیک ، از فایل هایی که قابلیت فشرده شدن را دارند استفاده نمایید ، مانند htm – html – txt – doc – xls – ppt – هنگام فشرده سازی حجم این فایل ها کاهش می یابد و سرعت دانلود را برای کاربران پایین می آورد و متعاقبا پهنای باند سرور نیز کاهش می یابد. فایلهایی مانند png نیز استاتیک هستند اما در فشرده سازی HTTP استفاده نمی شوند ، بدلیل اینکه ذاتا فشرده شده هستند.
در فشرده سازی دینامیک برخلاف استاتیک با هر بار درخواست کاربر ، فایل ها فشرده شده و ارسال می شود و در جایی ذخیره نمی گردند. این عدم ذخیره سازی به دلیل خاصیت متغیر بودن فایل های دینامیک می باشد. معمولا محتوای این فایل ها از طریق برنامه های ASP و یا ASP.NET تامین می گردند و IIS آنها را کش نمیکند. مشخصه های dynamicCompressionEnableCpuUsage و dynamicCompressionDisableCpuUsage در IIS نشان دهنده اینست که عملیات فشرده سازی براساس فایل و یا مصرف CPU باشد. [irp posts=”۴۲۶۸″ name=”asp.net چیست و همه چیز درباره کاربرد آن”]
در IIS از دو استاندارد Deflate و GZIP استفاده می شود. استاندارد Deflate از یک الگوریتم فشرده سازی که مخلوط الگوریتم LZ77 و کدینگ هافمن می باشد ، استفاده می کند. این استاندارد در فایل های GIF مورد استفاده قرار می گرفت و مدت زیادی دوام نیاورد. بعد ها این استاندارد منجر به بوجود آمدن GZIP گردید. از GZIP برای فشرده سازی فایل های PNG و فرمتهایZIP استفاده می شود. برنامه GNU ZIP ) GZIP ) در سال ۱۹۹۲ برای فشرده سازی فایل ها در پروژه GNU نوشته شد. این برنامه یک نرم افزار مجانی بود که در مقابل برنامه compress در یونیکس بوجود آمد. همانطور که گفته شد پایه برنامه GZIP بر اساس الگوریتم Deflate است. در استاندارد GZIP فایل ها دارای مشخصات زیر می باشد :
– هدر ۱۰ بایتی که شامل Magic Number – شماره نسخه و TimeStamp می باشد.
– هدر های اختصاصی که شامل نام فایل می گردند.
– بدنه فایل که شامل الگوریتم Deflate است.
– فوتر ۸ بایتی ، شامل Checksum CRC-32 و حجم فایل فشرده نشده.
برای ورود به بخش تنظیمات Compression در IIS ، در صفحه اصلی به بخش Performance بروید. گزینه Compression را انتخاب نمایید.
در این صفحه دو گزینه Enable Dynamic Content compression و Enable Static Content compression را مشاهده می نمایید. برای فعال کردن هرکدام تیک کنار گزینه ها را فعال نمایید. و در پایان از قاب Action برروی گزینه Apply کلیک کنید.
برای فشرده سازی استاتیک تنظیمات دیگری نیز وجود دارد. گزینه اول Only compress files larger than می باشد . این گزینه فقط فایل هایی را که بزرگتر از حجم تعریف شده ( بایت ) باشند را فشرده می نماید. برای فعال نمودن این ویژگی تیک کنار گزینه مورد نظر را کلیک نمایید و حداقل حجم را به بایت وارد نمایید.
در قسمت Cache Directory مسیر فولدری که فایل های فشرده شده در آن نگهداری می شوند تنظیم می گردد. برای مشخص نمودن مسیر فولدر گزینه Browse را از کنار کادر آدرس انتخاب نمایید.آدرس فولدر مورد نظر را وارد کنید.
گزینه Per Application pool disk space limit حجم App. Pool را برای هر برنامه مشخص می کند. برای فعال نمودن این ویژگی ، تیک کنار گزینه مورد نظر را انتخاب نمایید و در کادر پایین حجم برنامه را به مگابایت وارد نمایید.
قابل ذکر است که در خرید هاست اشتراکی معمولا دسترسی به این تنظیمات امکان پذیر نمی باشد زیرا در ساختار کل سرور تغییر به وجود می آورند، لذا اکثر گزینه های مشروح به هنگام خرید سروراختصاصی قابل تغییر می باشند.