یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری 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 فشرده شده در آن ذخیره می شود.
CacheItemPriority property

این property اولویت گزارش ذخیره شده در cache سرور را مشخص می کند. هنگام کمبود حافظه در سرور، هرچه اولویت یک گزارش کمتر باشد امکان پاک شدن آن از حافظه بیشتر است

CacheTimeout property

این property بازه زمانی ذخیره گزارش در cache سرور را به دقیقه مشخص می کند. اگر از Caching استفاده می کنید و گزارش درخواست شده در cache سرور موجود نباشد (زمان ذخیره آن به پایان رسیده)، توسط رویداد GetReport event دوباره request داده می شود و Render می شود

StiCacheHelper

HTML5 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 داشته باشد)، این کلاس قابل استفاده نیست.

1398/07/09 1182 0
نظرات شما

نظرات خود را ثبت کنید...