چگونه می توان فشرده سازی HTTP را درASP.NET فعال کرد؟

یکشنبه 17 آبان 1394

فشرده سازی HTTP حجم درخواست/پاسخ را کاهش داده و سرعت بارگذاری صفحه را بالا می برد. این کار یک وب سرور ساخته شده است که می تواند از پهنای باند بهتر استفاده کند و به شما کمک می کند تا عملکرد سایت خود را با تلاش کمتر بهبود ببخشید. این مقاله نشان می دهد که چگونه می توانید فشرده سازی HTTP را در ASP.NET استفاده کنید.

چگونه می توان فشرده سازی HTTP را درASP.NET فعال کرد؟

شما می توانید فشرده سازی HTTP را با استفاده از روش های زیر پیکربندی و یا فعال کنید :

1. فعال سازی در IIS

Command Prompt .2 (خط فرمان)

3. پیکربندی در فایل Web.config

4. فشرده سازی فایل های فیزیکی با استفاده از GZipStream

این روش ها با جزئیات در ادامه توضیح داده شده اند.

فعال سازی در IIS

IIS، گزینه های زیر را برای فشرده سازی ارائه می دهد:

1. فقط فایل های استاتیک

شما می توانید پیکربندی فشرده سازی HTTP را در فایل های استاتیک مانند فایل هایی با پسوند .html ، .text ، اسناد اداری با پسوندهای .dox ، .ppt ، ,xlsx فایل های css ، جاوا اسکریپت با پسوند .js انجام دهید. اندازه این فایل ها می تواند با استفاده از ویژگی های فشرده سازی کاهش یابد. این کار به کاهش زمان دانلود و کاهش پهنای باند مورد نیاز سرور کمک می کند.

شما با استفاده از فشرده سازی Http با فایل های عکس مزایای بیشتری بدست نمی آورید.

2. فقط فایل های پویا

شما می توانید فشرده سازی HTTP را برای محتوایی که به صورت پویا تولید می شود، پیکربندی کنید. این کار کمک می کند که بسته به استفاده پردازنده سرور استفاده کارآمدتر از پهنای باند سرور داشته باشید.

اگر مصرف پردازنده سرور از قبل بالا باشد پس فشرده سازی داینامیک بار اضافی خواهد داشت و می تواند سایت را کندتر کند. بنابراین فشرده سازی HTTP برای محتوای داینامیک، تجزیه و تحلیل و پیکربندی بیشتری نیاز دارد.

پیکربندی فشرده سازی HTTP

1. سرور IIS را با استفاده از inetmgr از پنجره ویندوز Run command، باز کنید.

2. بر روی sites کلیک کنید. این کار به شما تمام سایت هایی که بر روی این سرور میزبانی می شوند را نشان می دهد. اگر شما بخواهید فشرده سازی HTTP را برای تمام سایت ها فعال کنید، می توانید تنظیمات را توسط کلیک کردن بر روی نام سرور پیکربندی کنید.

3. سایتی را انتخاب کنید که می خواهید فشرده سازی HTTP را تحت گره های سایت پیکربندی کنید.

4. از پنجره سمت راست IIS manager بر روی Compression کلیک کنید.

Enable dynamic content compression .5 را برای محتوای داینامیک انتخاب کنید.

Enable static Content compression .6 را برای محتوای استاتیک انتخاب کنید.

 

شما همچنین می توانید جزییات را هم پیکربندی کنید، مانند اینکه فایل های استاتیک باید فشرده سازی شوند و محل ذخیره سازی برای Cache شدن فایل های استاتیک برای تمام وب سایت ها تعیین شوند.

IIS manager .1 را باز کنید.

2. بر روی نام سرور کلیک کنید.

3. از قسمت راست صفحه از IIS manager بر روی Compression کلیک کنید.

4. این کار به شما تنظیمات فشرده سازی را نشان می دهد. بر روی Enable static content compression کلیک کنید.

 

فعال کردن فشرده سازی HTTP با استفاده از command prompt

شما می توانید فشرده سازی HTTP را بااستفاده از command prompt فعال کنید.

cd %windir%\system32\inetsrv

command prompt .1 مربوط به Visual Studio را با استفاده از Run as Administrator باز کنید.

2. به دایرکتوری inetsrv از system32 بروید. دستور زیر را برای رفتن به دایرکتوری سمت راست استفاده کنید.

3. از Appcmd برای پیکربندی بیشتر استفاده کنید. از آنجا که این دستور فقط می تواند توسط اعضای گروه Administrator اجرا شود، پس نیاز دارد که open command prompt به عنوان Administrator باز شود.

4. برای فشرده سازی محتوای استاتیک دستور زیر را استفاده کنید:

   appcmd set config /section:urlCompression /minFileSizeforComp: int 
              /directory: string /maxDiskSpace: int

5. برای فعال سازی فشرده سازی محتوای داینامیک از دستور زیر در command prompt استفاده کنید.

appcmd set config /section:urlCompression /doDynamicCompression:True

این کار تغییرات را برای فایل machine.config اعمال می کند و پیکربندی برای تمام سایت هایی که روی این ماشین میزبانی شده اند، بکارگرفته خواهد شد.

 

پیکربندی فشرده سازی HTTP در Web.config

شما می توانید httpCompression را برای اپلیکشن خود با استفاده از فایل Web.config فعال کنید. شما نیاز به پیکربندی المان های <httpCompression /> و <urlCompression /> تحت <system.webServer /> دارید.

پیکربندی زیر را در فایل web.config اضافه کنید:

<system.webServer>
    
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
    <dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/json" enabled="true" />
    <add mimeType="*/*" enabled="false" />
    </dynamicTypes>
    <staticTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/atom+xml" enabled="true" />
    <add mimeType="application/xaml+xml" enabled="true" />
    <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>
    
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
    
</system.webServer >

httpCompression اشاره می کند که کدام مکان برای فشرده سازی باید مورد استفاده قرار گیرد. برای این کار از gzip dll جهت رمزگذاری gzip و انواع محتوایی که باید فشرده شود استفاده می شود.

المان UrlCompression مشخص می کنند که کدام محتوا باید فشرده شود. همانطور که در نکات قبلی ذکر شد، شما می توانید برای محتوای داینامیک و استاتیک برنامه های خود، فشرده سازی را فعال کنید.

 

فشرده سازی فایل های فیزیکی با استفاده از GZipStream

شما می توانید فایل های aspx، css و js فیزیکی را فشرده کرده و آنها را روی سرور قرار دهید. این کار موجب صرفه جویی در پهنای باند شود به خاطر اینکه اندازه فایل ها کوچکتر می شوند.

کد زیر را استفاده کنید:

private void CompressFile(string srcPath,
                 string tarPath)
{
    using(FileStream srcStream 
                = File.OpenRead(srcPath))
    {
        using(FileStream tarStream 
                    = File.OpenWrite(tarPath));
        {
            using(GZipStream cStream = new GZipStream(srcStream,
                CompressMode.Compress))
            {
            byte[]data = new byte[srcStream.Length];
            srcStream.Read(data, 0, data.Length);
            tarStream.Write(data, 0, data.Length);
            }
        }
    }
}

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید