نمایش نتایج 1 تا 3 از 3

نام تاپیک: فشرده سازی صفحات و استفاده از کنترل های MSAjax

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار hadi000333
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران- هاشمی
    پست
    116

    فشرده سازی صفحات و استفاده از کنترل های MSAjax

    این اولین مقاله ای هست که می نویسم پس ضعف ها و کاستی ها رو به بزرگواریتون ببخشید.

    در این مقاله فرض بر این است که شما آشنا یی نسبتا خوبی به Asp.net و C#‎ دارید.

    مقدمه :
    در این مقاله به فشرده سازی صفحات و استفاده از کنترل های MSAjax
    می پردازم.
    در این سایت یک ماژول برای کم کردن حجم صفحه معرفی شده ولی مشکلاتی داره که خواهم گفت. و روش های دیگه که معرفی میشه یا کارایی با اون پردازشی که انجام میدن نداره و یا چندان فرقی ندارن.

    قسمت اول:
    استفاده از کنترل های Ms Ajax فوق العاده هستند ولی حجم خیلی زیادی رو دارند. ولی نمیشه به خاطر این عیب ازشون صرفه نظر کرد.
    .چرا؟
    به هر حال شما مجبورید از آنها استفاده کنید!!
    قسممت دوم :
    استفاده از Compress صفحات برای سایت ها تو ایران یک اجباره!!!
    ولی وقتی از این روش استفاده می کنی دیگه قادر به استفاده از کنترل های MS Ajax نیستید. چه بد!
    پس باید یه کاری کرد.

    خوب من از روشی که scriptResource ها رو ادغام می کنن استفاده نمیکنم .
    چرا؟
    چون قابلیت کش رو از مرور گر می گیرن. و پردازش زیادی انجام میدن .
    راه حل:
    تنها کاری که ما باید بکنیم اینه که تکنیک این کار رو تغییر بدیم.
    چه طوری؟

    روش پیاده سازی رو از Module به Page تغییر بده. همین !!!
    خوب حالا کد :
    یک کلاس به این شکل بسازید:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    using System.Xml.Xsl;
    using System.Data.SqlClient;
    using System.IO;
    using System.Text;
    using System.IO.Compression;
    namespace hadi000333
    {
    public class MyUtility
    {

    public static bool IsGZipSupported()
    {

    string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];

    if (!string.IsNullOrEmpty(AcceptEncoding) &&

    AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate"))

    return true;

    return false;

    }

    public static void GZipEncodePage()
    {

    if (IsGZipSupported())
    {

    HttpResponse Response = HttpContext.Current.Response;



    string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];

    if (AcceptEncoding.Contains("gzip"))
    {

    Response.Filter = new System.IO.Compression.GZipStream(Response.Filter,

    System.IO.Compression.CompressionMode.Compress);

    Response.AppendHeader("Content-Encoding", "gzip");

    }

    else
    {

    Response.Filter = new System.IO.Compression.DeflateStream(Response.Filte r,

    System.IO.Compression.CompressionMode.Compress);

    Response.AppendHeader("Content-Encoding", "deflate");

    }

    }

    }

    }
    }


    و در Page هاتون به این شکل استفاده کنین.
    protected void Page_Load(object sender, EventArgs e)
    {
    hadi000333.MyUtility.GZipEncodePage();
    }


    توضیح:
    IsGZipSupported : بررسی می کند آیا مرورگر از GZip پشتیبانی میکنه یا نه.
    GZipEncodePage : وظیفه فشرده سازی به عهده این متد هست.

    این روش خیلی مناسبه و همون کارایی رو داره یعنی تا 85%
    مزایا :
    1- کاملا با MsAjax کار میکنه .
    2- می تونید در هر صفحه که نیاز دارید استفاده کنید.و در صفحه هایی که تصویر زیادی دارید استفاده نکنید.
    ولی یه مشکل کوچیک : شما باید توی هر صفحه این کد رو بنویسید.
    پس از Object Oreinted استفاده کنید تا دنیا زیبا تر بشه.
    پس:
    namespace System.Web.UI
    {
    public class BasePage : System.Web.UI.Page
    {

    protected override void OnLoad(EventArgs e)
    {
    hadi000333.MyUtility.GZipEncodePage();
    base.OnLoad(e);
    }

    }
    }

    و در Page هاتون از کلاس بالا ارث بری کنید.

    public partial class _Default : System.Web.UI.BasePage
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    }


    و از Compress کردن Page هاتون لذت ببرید.
    موفق باشید.
    منیع:
    این روش رو Rick Strahl در وبلاگ خودش معرفی کرده.
    http://west-wind.com/WebLog/posts/10294.aspx
    آخرین ویرایش به وسیله hadi000333 : شنبه 23 آذر 1387 در 12:36 عصر دلیل: غلط املایی

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •