
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
آموزش قابلیت Caching در Viewer Stimulsoft
آموزش قابلیت Caching در Viewer Stimulsoft
HTML5 Viewer component امکان استفاده از cache سرور برای ذخیره ی گزارشات Render شده را در اختیار می گذارد. اگر از caching استفاده نکنید با هر request برای مشاهده یک صفحه، باید گزارش را load کنید، به منبع data وصل شوید، و گزارش را دوباره render کنید. اگر از caching استفاده کنید، با هر refresh صفحه، گزارش render شده از cache خوانده و load می شود.
هنگام استفاده از caching باید این موضوع را در نظر داشته باشید که هر گزارش cache شده حافظه مصرف می کند و اگر تعداد Request ها زیاد باشد، مصرف بیش از حد حافظه به یک مشکل حیاتی تبدیل خواهد شد.
برای استفاده از caching، باید ماژول ها را طوری تنظیم کنید که با session یا cache در سرور کار کنند. برای این منظور، Service های زیر با به فایل startup.cs پروژه اضافه کنید:
1 2 3 4 5 6 7 8 9 | Startup.cs ... public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); services.AddSession(); services.AddMvc(); } ...< button ></ button > |
می توانید caching را با استفاده از property های زیر کنترل کنید:
CacheMode propertyاین property از viewer برای فعال کردن caching و تعیین نوع آن استفاده می شود و یکی از مقادیر زیر را به صورت یک StiServerCacheMode enumeration می گیرد:
- None – caching را غیرفعال می کند. هر action از viewer نیاز به laod گزارش از فایل و render دارد.
- ObjectCache - از cache سرور برای Caching استفاده می شود و report object در آن ذخیره می شود (مقدار پیش فرض).
- StringCache - از session جاری که report object در آن ذخیره شده، برای Caching استفاده می شود.
- ObjectSession - از cache سرور برای Caching استفاده می شود و گزارش به صورت string فشرده شده در آن ذخیره می شود.
- StringSession - از session جاری برای Caching استفاده می شود و گزارش به صورت string فشرده شده در آن ذخیره می شود.
این property اولویت گزارش ذخیره شده در cache سرور را مشخص می کند. هنگام کمبود حافظه در سرور، هرچه اولویت یک گزارش کمتر باشد امکان پاک شدن آن از حافظه بیشتر است
CacheTimeout propertyاین property بازه زمانی ذخیره گزارش در cache سرور را به دقیقه مشخص می کند. اگر از Caching استفاده می کنید و گزارش درخواست شده در cache سرور موجود نباشد (زمان ذخیره آن به پایان رسیده)، توسط رویداد GetReport event دوباره request داده می شود و Render می شود
StiCacheHelperHTML5 Viewer component امکان تعریف متدهای موردنظر برای کار با caching گزارشات را می دهد. به این منظور از کلاس class StiCacheHelper استفاده می کنیم که دارای متدهایی برای بازیابی گزارش از cache و ذخیره آن در cache است. به این منظور لازم است یک کلاس که از StiCacheHelper ارث بری کرده است ایجاد کنیم و متدهای GetReport و SaveReport آن را override کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | HomeController.cs ... public class ViewerController : Controller { public class StiMyCacheHelper : StiCacheHelper { public override StiReport GetReport(string guid) { string path = System.IO.Path.Combine(this.HttpContext.Server.MapPath("CacheFiles"), guid); if (System.IO.File.Exists(path)) { StiReport report = new StiReport(); string packedReport = System.IO.File.ReadAllText(path); if (guid.EndsWith("template")) report.LoadPackedReportFromString(packedReport); else report.LoadPackedDocumentFromString(packedReport); return report; } return null; //return base.GetReport(guid); } public override void SaveReport(StiReport report, string guid) { string packedReport = guid.EndsWith("template") ? report.SavePackedReportToString() : report.SavePackedDocumentToString(); string path = System.IO.Path.Combine(this.HttpContext.Server.MapPath("CacheFiles"), guid); System.IO.File.WriteAllText(path, packedReport); //base.SaveReport(report, guid); } } static ViewerController() { StiNetCoreViewer.CacheHelper = new StiMyCacheHelper(); } } ...< button ></ button > |
برای شروع کار با Caching و استفاده از این کلاس کافی است StiNetCoreViewer.CacheHelper property را در سازنده ی controller به این یک شی از این کلاس مقداردهی کنیم.
توجه: اگر report caching غیرفعال باشد (یعنی CacheMode property از viewer مقدار None داشته باشد)، این کلاس قابل استفاده نیست.