1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

ذخیره سازی داده ها ASP.NET-Data Caching

شروع موضوع توسط AftabGardoon ‏8/2/19 در انجمن ASP.NET

Tags:
  1. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    مثال:

    جهت تشریح data caching به ایجاد یک وب سایت آزمایشی می پردازیم.


    ابتدا یک وب سایت جدید ایجاد کرده، سپس یک web form به آن اضافه کنید. همچنین یک کنترل SqlDataSource که دارای اتصال به پایگاه داده باشد، اضافه کنید.


    حال یک label به صفحه اضافه کنید که در آن response time صفحه نمایش داده می شود.

    کد:
    < %@ OutputCache Duration="60" VaryByParam="txtname" % >

    یک event handler به رخداد page load اضافه کنید:

    کد:
    protected void Page_Load(object sender, EventArgs e)
         {
             lbltime.Text = String.Format("Page posted at: {0}",DateTime.Now.ToLongTimeString());
         }
    نتیجه:

    [​IMG]
     
  2. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    Object Caching
    Object caching در مقایسه با دیگر تکنیک های ذخیره سازی موقت داده، انعطاف پذیری بیشتری را فراهم می کند.


    می توان با بهره گیری از تکنیک object caching هر شئی را داخل حافظه ی نهان قرار داد. شئ می تواند از هر نوعی باشد – یک نوع داده (data type)، یک کنترل وب (web control)، یک کلاس، یک dataset object و غیره .. . آیتم مورد نظر را می توان تنها با تخصیص اسم کلید (key name)، به حافظه ی نهان اضافه کنید:

    کد:
    Cache["key"] = item;
     
  3. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    ASP.NET برای درج یک شئ به داخل cache متد Insert() را ارئه داده است. ان تابع دارای چهار نسخه ی overload شده است که زیر مشاهده می کنید:

    [​IMG]
     
  4. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    Sliding expiration را زمانی بکار می بریم که می خواهیم آیتمی را که طی مدت زمان مشخصی مورد استفاده قرار نگرفته از حافظه ی نهان یا cache حذف کنیم. تکه کد زیر آیتمی را که Sliding expiration آن 10 دقیقه تنظیم شده و هیچ dependency ای ندارد ذخیره می کند.

    کد:
    Cache.Insert("my_item", obj, null, DateTime.MaxValue, TimeSpan.FromMinutes(10));
     
  5. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    یک صفحه ایجاد کنید که فقط دارای یک کنترل label و button باشد. اکنون کد زیر را در رخداد page load وارد کنید:

    کد:
    protected void Page_Load(object sender, EventArgs e)
            {
                if (this.IsPostBack)
                {
                    lblinfo.Text += "Page Posted Back.< br/ >";
                }
                else
                {
                    lblinfo.Text += "page Created.< br/ >";
                }
                if (Cache["testitem"] == null)
                {
                    lblinfo.Text += "Creating test item.< br/ >";
                    DateTime testItem = DateTime.Now;
                    lblinfo.Text += "Storing test item in cache ";
                    lblinfo.Text += "for 30 seconds.< br/ >";
                    Cache.Insert("testitem", testItem, null,
                    DateTime.Now.AddSeconds(30), TimeSpan.Zero);
                }
                else
                {
                    lblinfo.Text += "Retrieving test item.< br/ >";
                    DateTime testItem = (DateTime)Cache["testitem"];
                    lblinfo.Text += "Test item is: " + testItem.ToString();
                    lblinfo.Text += "< br/ >";
                }
                lblinfo.Text += "< br/ >";
            }
     
  6. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اولین باری که صفحه بارگذاری می شود، پیغام زیر را ارائه می دهد:

     
  7. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اگر 30 ثانیه بعد مجددا روی دکمه کلیک کنید، صفحه postback (بازگردانده) می شود اما کنترل label اطلاعات خود را از حافظه ی نهان بازیابی می کند: