PDA

View Full Version : سوال: caching in asp.net



محمدامین شریفی
شنبه 01 خرداد 1389, 20:00 عصر
با سلام خدمت دوستان.

در سایت ای که در حال طراحی آن هستم از masterpage,webusercontrol,webpage و App_Themes به نحوه زیر استفاده کرده ام.

کنترل هایی که در طول برنامه نویسی از آن ها زیاد استفاده می شود را درون webusercontrol قرار داده ام، بنابرین انتظار دارم که این کنترل ها همیشه بروز باشند.

design برنامه را با استفاده از App_Themes و در فایل masterpage قرار داده ام و انتظار دارم محتوای آنها کش شود.

تمام webpage از masterpage ارث بری شده اند و کنترل هایی که نیاز به بروزرسانی داشته اند، اغلبا در فایل webusercontrol قرار داده شده اند.


بنظر شما بهترین روش برای کش کردن ِ page و بروز شدن ناحیه ای از page که در اینجا usercontrol می باشد، چگونه است؟

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

Alireza_Salehi
شنبه 01 خرداد 1389, 20:20 عصر
مرورگرهای امروزی به صورت خودکار فایلهای حجیم مانند عکس، اسکریپت و CSS را کش میکنند و در دفعات بعدی که کاربر سایت شما را بازدید می کند درخواست جدیدی به سرور ارسال نخواهد شد.
با ابزارهایی مثل firebug و httpwatch می توانید این موضع را تست کنید.

اما اگر بخواهید تغییری در نحوه کش شدن محتوای استاتیک داشته باشید دو حالت دارد:
1. سرور اختصاصی دارید: با تنظیم یک سری پارامترها در IIS می توانید مدت کش شدن هر نوع فایل را تعیین کنید. و در صورتی ک سرور شما مجهز به IIS 7 باشد امکانات و آپشن های بیشتری برای این کار در اختیار خواهید داشت.

2. سرور اختصاصی ندارید: با نوشتن یک httphandler می توانید header کش با ویژگی هایی که خودتان مایلید را به هر نوع فایلی اضافه نمائید.


کش شدن منوط به وجود header مربوطه در پاسخ هر فایل از سرور است. معمولا در هنگام فشرده سازی چنین چیزی را هم در نظر می گیرند.

موارد فوق مربوط به فایل های استاتیک است و د صورتی که فایل های فوق در نهایت فشردگی و در مدت زمانی منطقی کش گردند سرعت بالا آمدن سایت به طور قابل ملاحظه ای افزایش می یابد.

کش کردن درخواست های دیتابیس نیز در ASP.NET قابل انجام است ک هبا جستجو در تالار پست هایی در مورد آن خواهید یافت.

نکته آخر این که فشرده سازی سربار قابل توجهی به سرور وارد می کند مخصوصا اگر سرور اختصاصی نداشته باشید و این امر توسط httphandler انجام پذیرد. بنابراین این کار باید با دقت انجام پذیرد در غیر این صورت مدام با پیام connnection reset در وب سایت مواجه خواهید شد. (به دلیلی ریست شدت Applicatin Pool)

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

نکته مهم: معمولا حجم کد صفحات به نسبت فایل هایی که به صفحه لینک می شوند ناچیز است ،بنابراین کش شدن فایل ها تاثیر مهمی دارد.

Alireza_Salehi
شنبه 01 خرداد 1389, 20:32 عصر
فشرده سازی:
http://www.codeproject.com/KB/aspnet/httpcompression.aspx
http://blowery.org/httpcompress/


کش کردن تصاویر توسط HttpHandler:
http://www.codeproject.com/KB/aspnet/CachingImagesInASPNET.aspx

اگر از ابزارهایی استفاده کرده اید که در CDN های مایکروسافت، گوگل، و ... یافت می شود حتما از CDN مربوطه به جای سرور خودتان استفاده کنید چون هم فشرده سازی و هم کش شدن در آنها رعایت شده است.

مثل jQuery,ASP.NET Ajax و ...


با این کارها قسمت کمی برای هر بار لود شدن در هر صفحه باقی می ماند.