Browse Source

Check the cache to prevent remote calls.

pull/21474/head
maliming 1 year ago
parent
commit
6f1e2bdfe0
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 5
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageCacheItem.cs
  2. 17
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs

5
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheItem.cs → modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageCacheItem.cs

@ -3,10 +3,11 @@ using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Pages;
[Serializable]
public class PageCacheItem : ExtensibleObject
{
public Guid Id { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
@ -23,4 +24,4 @@ public class PageCacheItem : ExtensibleObject
{
return $"CmsPage_{slug}";
}
}
}

17
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs

@ -2,9 +2,11 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing;
using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Features;
using Volo.CmsKit.Features;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Public.Pages;
namespace Volo.CmsKit.Public.Web.Pages;
@ -13,14 +15,16 @@ public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITr
{
protected IFeatureChecker FeatureChecker { get; }
protected IPagePublicAppService PagePublicAppService { get; }
protected IDistributedCache<PageCacheItem> PageCache { get; }
public CmsKitPageRouteValueTransformer(IFeatureChecker featureChecker, IPagePublicAppService pagePublicAppService)
public CmsKitPageRouteValueTransformer(IFeatureChecker featureChecker, IPagePublicAppService pagePublicAppService, IDistributedCache<PageCacheItem> pageCache)
{
FeatureChecker = featureChecker;
PagePublicAppService = pagePublicAppService;
PageCache = pageCache;
}
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
public async override ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
if (values.TryGetValue("slug", out var slugParameter) && slugParameter is not null)
{
@ -30,7 +34,12 @@ public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITr
}
var slug = slugParameter.ToString().TrimStart('/');
var exist = await PagePublicAppService.DoesSlugExistAsync(slug);
var exist = await PageCache.GetAsync(PageCacheItem.GetKey(slug)) != null;
if (!exist)
{
exist = await PagePublicAppService.DoesSlugExistAsync(slug);
}
if (exist)
{
@ -40,4 +49,4 @@ public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITr
return values;
}
}
}

Loading…
Cancel
Save