Browse Source

Cached homepage action for better performance

pull/13635/head
malik masis 4 years ago
parent
commit
567936d259
  1. 26
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs
  2. 6
      modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs

26
modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs

@ -1,4 +1,7 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Distributed;
using Volo.Abp.Caching;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Contents;
using Volo.CmsKit.GlobalFeatures;
@ -11,11 +14,13 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
{
protected IPageRepository PageRepository { get; }
protected ContentParser ContentParser { get; }
private readonly IDistributedCache<PageDto> _cache;
public PagePublicAppService(IPageRepository pageRepository, ContentParser contentParser)
public PagePublicAppService(IPageRepository pageRepository, ContentParser contentParser, IDistributedCache<PageDto> cache)
{
PageRepository = pageRepository;
ContentParser = contentParser;
_cache = cache;
}
public virtual async Task<PageDto> FindBySlugAsync(string slug)
@ -34,14 +39,21 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindDefaultHomePageAsync()
{
var page = await PageRepository.FindByIsHomePageAsync(true);
if (page == null)
var pageDto = await _cache.GetAsync("DefaultHomePage");
if (pageDto is null)
{
return null;
var page = await PageRepository.FindByIsHomePageAsync(true);
if (page is null)
{
return null;
}
pageDto = ObjectMapper.Map<Page, PageDto>(page);
await _cache.SetAsync("DefaultHomePage", pageDto,
new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) });
}
var pageDto = ObjectMapper.Map<Page, PageDto>(page);
return pageDto;
}
}

6
modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs

@ -5,6 +5,7 @@ using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook;
using Volo.Abp.AutoMapper;
using Volo.Abp.Caching;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Modularity;
@ -76,6 +77,11 @@ public class CmsKitPublicWebModule : AbpModule
{
options.DisableModule(CmsKitPublicRemoteServiceConsts.ModuleName);
});
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "CmsKit:";
});
}
public override void PostConfigureServices(ServiceConfigurationContext context)

Loading…
Cancel
Save