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.Abp.GlobalFeatures;
using Volo.CmsKit.Contents; using Volo.CmsKit.Contents;
using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.GlobalFeatures;
@ -11,11 +14,13 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
{ {
protected IPageRepository PageRepository { get; } protected IPageRepository PageRepository { get; }
protected ContentParser ContentParser { 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; PageRepository = pageRepository;
ContentParser = contentParser; ContentParser = contentParser;
_cache = cache;
} }
public virtual async Task<PageDto> FindBySlugAsync(string slug) public virtual async Task<PageDto> FindBySlugAsync(string slug)
@ -34,14 +39,21 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindDefaultHomePageAsync() public virtual async Task<PageDto> FindDefaultHomePageAsync()
{ {
var page = await PageRepository.FindByIsHomePageAsync(true); var pageDto = await _cache.GetAsync("DefaultHomePage");
if (pageDto is null)
if (page == 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; 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.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook; using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.Caching;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
@ -76,6 +77,11 @@ public class CmsKitPublicWebModule : AbpModule
{ {
options.DisableModule(CmsKitPublicRemoteServiceConsts.ModuleName); options.DisableModule(CmsKitPublicRemoteServiceConsts.ModuleName);
}); });
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "CmsKit:";
});
} }
public override void PostConfigureServices(ServiceConfigurationContext context) public override void PostConfigureServices(ServiceConfigurationContext context)

Loading…
Cancel
Save