Disable caching of MVC widgets
This article describes how to disable caching of MVC widgets without disabling the output cache for the whole page.
Because the MVC widget Razor view (the .cshml file) cannot be excluded from the page cache, you need to update the content through an AJAX call.
The following sample demonstrates a simple MVC widget which displays random numbers, even if the page is cached.
Controller
The controller defines a JSON route at ~/rest-api/ajax-widget-data which is used to return the data.
C#
using System;
using System.Web.Mvc;
using Telerik.Sitefinity.Mvc;
namespace SitefinityWebApp.Mvc.Controllers
{
public class AjaxModel
{
public int data { get; set; }
public AjaxModel(int value)
{
this.data = value;
}
public AjaxModel()
{
Random random = new Random();
this.data = random.Next(0, 100);
}
}
[ControllerToolboxItem(Name = "Ajax", Title = "Ajax Updates", SectionName = "Custom")]
public class AjaxController : Controller
{
public ActionResult Index()
{
return View("Default");
}
[Route("rest-api/ajax-widget-data")]
public JsonResult Status()
{
var response = new AjaxModel();
return this.Json(response, JsonRequestBehavior.AllowGet);
}
}
}
View
The view performs an AJAX call to that route using $.ajax. It sets the cache: false parameter to avoid that response to be cached.
HTML+Razor
@using Telerik.Sitefinity.Frontend.Mvc.Helpers
@using Telerik.Sitefinity.Modules.Pages;
@Html.Script(ScriptRef.JQuery, "top", false)
<div id="data">n/a</div>
<script language="JavaScript">
(function ($) {
$(function () {
$.ajax({
url: '/rest-api/ajax-widget-data',
cache: false,
success: function (response) {
if (response && response.data) {
var data = response.data;
$('#data')[0].innerHTML = data;
}
else {
$('#data')[0].innerHTML = "Unknown response (" + response + ")";
}
}
});
});
}(jQuery));
</script>
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
Get started with Integration Hub | Sitefinity Cloud
This free lesson teaches administrators, marketers, and other business professionals how to use Sitefinity Integration Hub to create automated workflows between Sitefinity and other business systems.
Web Security for Sitefinity Administrators
This free lesson teaches administrators the basics about protecting your Sitefinity instance and your sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.
Foundations of Sitefinity ASP.NET Core Development
The free on-demand video course teaches developers how to use Sitefinity ASP.NET Core and take advantage of its decoupled architecture and modern development model.