sender، مرجعی است که قصد فشرده سازی را دارد و این مرجع، برنامه ی جاری است. به آن یک ارجا پیدا می کنیم.
مقدار هدر "Accept-Encoding" در متغیر encodings قرار می گیرد. در صورتی که این مقدار وجود نداشته باشد، مرورگر به هر دلیلی فشرده سازی داده ها را ساپورت نخواهد کرد. در این صورت، برنامه با دستور Return به کار خود پایان خواهد داد.
متد Filter کلاس Response، ***************ی را به داده هایی که قرار است به سمت کلاینت ارسال شوند اعمال می کند. این داده ها به شکل Stream خواهند بود.
در ابتدا باید نوع فشرده سازی ای که توسط مرورگر ساپورت می شود را تشخیص دهیم. این کار با متد Contains متغیر encodings امکان پذیر است. در ابتدا وجود عبارت gzip بررسی می شود و در صورتی که این مقدار جز مقادیر هدر بود، نوع فشرده سازی Gzip به آن اعمال می شود و مقدار هدر "Content-Encoding" به "gzip" تنظیم می شود. این مقدار برای آگاهی از نوع فشرده سازی است که بر روی داده های دریافتی اعمال می شود.
در صورتی که فشرده سازی gzip توسط مرورگر ساپورت نشود، وجود مقدار "deflate" بررسی می شود و این نوع فشرده سازی به داده ها اعمال می شود.
توجه:
فشرده سازی Gzip و Deflate تفاوتی در میزان کاهش حجم داده ها ندارند. جزئیات فشرده سازی Gzip در RFC 1952 و فشرده سازی Deflate در RFC 1951 شرح داده شده است. در این مراجع شرح داده شده است که این نوع فشرده سازی ها از ترکیبی از الگوریتم های "LZ77" و "هافمن" استفاده می کنند و حداکثر میزان فشرده سازی آنها برای داده هایی با حداکثر حجم "چهار گیگابایت" است.
فرمت Gzip یک استاندارد فشرده سازی Open Source و جزء فرمت های متداول در سیستم عامل هایی همچون لینوکس هست.
خسته نباشید! تنها کار باقیمانده، تبدیل کلاس به فایل DLL است.
با استفاده از کامپایلر VB.NET (فایل vbc.exe) و یا کامپایلر C#.NET (فایل csc.exe) می توانید این کار را انجام دهید.
فایل های فوق در مسیر زیر وجود دارند:
HttpModule ها کنترل بیشتری بر روی درخواست ها خواهند داشت؛ پس بهترین کار، ایجاد یک HttpModule است که بر روی تمامی درخواست ها کنترل داشته باشد.
drive:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
با استفاده از خط فرمان DOS فایل را کامپایل می کنیم.
از منوی Start ویندوز، گزینه ی Run را انتخاب کنید. عبارت "cmd" را وارد کنید.
با دستور cd به مسیر فوق بروید و سپس عبارت زیر را وارد کنید:
vbc /t:library /r:System.dll,System.Web.dll D:\inetpub\wwwroot\myApp\App_Code\HttpCompression. vb
مسیر فایل HttpCompression.vb را بر مبنای سیستم خود تنظیم کنید.
پس از اجرای دستور فوق، فایل DLL حاصل در پوشه ی App_Code قرار خواهد گرفت.
حال پوشه ای با نام "bin" ایجاد کنید و DLL فوق را به آن انتقال دهید.
برای شناساندن این HttpModule به برنامه، باید آن را در فایل Web.Config تعریف کرد.
پس از عبارت <system.web> دستورات زیر را بنویسید:
</system.web><httpmodules><httpmodules></httpmodules></httpmodules> این قسمت رو داخل تگ کد قبول نمیکنه ناچار درون تگ اچ تی ام ال قرار میدم
کد:
<httpModules>
<add name="HttpCompressionModule"
type="Behrouz.Compression.HttpCompressionModule, HttpCompressionModule"/>
</httpModules>