فشرده سازی خروجی API
در ایم مطلب میخواهیم توضیح مختصری در مورد فشرده سازی خروجی یک وب سرویس به شما کاربران وب سایت api.ir بدهیم.
برای این منظور نیاز است تا بتوان response حاصل را کاملا کنترل کرد و این مورد از طریق یک http module به خوبی قابل انجام است. مبحث http compression و پیاده سازی آنرا احتمالا بارها در سایتهای مختلف نیز دیدهاید:
در این ماژول تنها درخواستهایی از نوع application/json بررسی خواهند شد. هر چند این فشرده سازی را بر روی خروجی هر نوع WebMethod ایی نیز میتوان اعمال کرد. در این حالت، سطر بررسی json را حذف کرده و آنرا به صورت زیر تغییر دهید:
if ( !request.Url.PathAndQuery.ToLower().Contains( ".asmx" ) ) return;
مرورگر IE6 و پایینتر نیز از این فشرده سازی معاف شدهاند (چون یا پشتیبانی کاملی را ارائه نمیدهند یا باید منتظر کرش مرورگر بود).
جهت اعمال این ماژول به برنامه ASP.Net خود، کافی است سطر زیر را به قسمت httpModules وب کانفیگ افزود:
<httpModules> <add name="JsonCompressionModule" type="JsonCompressionModule"/> </httpModules>
روش آزمایش ماژول تهیه شده:
متاسفانه افزونهی فایرباگ فایرفاکس اندازهی نهایی response را نمایش میدهد و در گزارش آن حتی خبری از Content-encoding اضافه شده نیز نخواهد بود. بنابراین برای بررسی این روش مناسب نیست.
ابزار دیگری که اساسا برای این نوع آزمایشات طراحی شده است، برنامه معروف فیدلر میباشد (که توسط مدیر پروژه تیم IE برنامه نویسی شده است).
برای استفاده از فیدلر جهت دیباگ درخواستهای local باید یک نکتهی کوچک را رعایت کرد:
http://localhost.:25413/
همانطور که در URL فوق مشاهده میکنید یک نقطه پس از localhost اضافه شده است تا خروجی محلی مربوطه قابل بررسی شود.

مطابق تصویر فوق، هم content-encoding اضافه شده مشخص است و هم حجم پاسخ دریافتی از 40 کیلوبایت (بر اساس یک تست معمولی روی صفحهای مشخص) به نزدیک یک کیلوبایت و اندی کاهش یافته است.
در این مطلب در مورد فشرده سازی خروجی یک وب سرویس توضیح دادیم در مطالب بعدی بیشتر در این مورد صحبت خواهیم کرد