Files
Umbraco-CMS/src/Umbraco.Web/Editors/NuCacheStatusController.cs
2019-02-13 09:53:17 +01:00

64 lines
1.8 KiB
C#

using System;
using System.Web.Http;
using Umbraco.Web.Cache;
using Umbraco.Web.Composing;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.PublishedCache.NuCache;
using Umbraco.Web.WebApi;
namespace Umbraco.Web.Editors
{
public class NuCacheStatusController : UmbracoAuthorizedApiController
{
private readonly IPublishedSnapshotService _publishedSnapshotService;
public NuCacheStatusController(IPublishedSnapshotService publishedSnapshotService)
{
_publishedSnapshotService = publishedSnapshotService ?? throw new ArgumentNullException(nameof(publishedSnapshotService));
}
private PublishedSnapshotService PublishedSnapshotService
{
get
{
var svc = _publishedSnapshotService as PublishedSnapshotService;
if (svc == null)
throw new NotSupportedException("Not running NuCache.");
return svc;
}
}
[HttpPost]
public string RebuildDbCache()
{
var service = PublishedSnapshotService;
service.RebuildContentDbCache();
service.RebuildMediaDbCache();
service.RebuildMemberDbCache();
return service.GetStatus();
}
[HttpGet]
public string GetStatus()
{
var service = PublishedSnapshotService;
return service.GetStatus();
}
[HttpGet]
public string Collect()
{
var service = PublishedSnapshotService;
GC.Collect();
service.Collect();
return service.GetStatus();
}
[HttpPost]
public void ReloadCache()
{
Current.DistributedCache.RefreshAllPublishedSnapshot();
}
}
}