使用Javascript进行脚本缓存的最佳实践
使用: C#MVC5和Jquery 我有一个可能使用多个不同过滤器的过滤器屏幕。根据用户选择的内容,我调用服务器并将部分视图加载到引导模式中,如下所示:使用Javascript进行脚本缓存的最佳实践,javascript,jquery,twitter-bootstrap,caching,asp.net-mvc-5,Javascript,Jquery,Twitter Bootstrap,Caching,Asp.net Mvc 5,使用: C#MVC5和Jquery 我有一个可能使用多个不同过滤器的过滤器屏幕。根据用户选择的内容,我调用服务器并将部分视图加载到引导模式中,如下所示: $.ajax({ url: filterUrl, contentType: 'application/html', success: function (filterContent) { $("#divReportFilterModalBod
$.ajax({
url: filterUrl,
contentType: 'application/html',
success: function (filterContent) {
$("#divReportFilterModalBody").html(filterContent);
LoadFilterScript(SCOPESTRINGS[currentReport.Scope]);
},....
$.getScript(scopeString + "FilterJavaScript",
function () {
下一步是为该过滤器页面加载必要的javascript,因为在局部视图上不能有脚本。为此,我还从服务器请求脚本,如下所示:
$.ajax({
url: filterUrl,
contentType: 'application/html',
success: function (filterContent) {
$("#divReportFilterModalBody").html(filterContent);
LoadFilterScript(SCOPESTRINGS[currentReport.Scope]);
},....
$.getScript(scopeString + "FilterJavaScript",
function () {
mvc控制器:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult ScopeFilterJavaScript()
{
return
File(System.IO.File.ReadAllBytes(Server.MapPath("~/Scripts/.../filterPartial.js")), "text/javascript");
}
因为用户一次只能使用一个过滤器,并且可能使用也可能不使用多个过滤器,所以我的问题是:
if (!window.foobarLoaded) {
// your script content
window.foobarLoaded = true;
}
然后,您可以随意多次加载脚本-它只“执行”一次。只是一个提示:删除脚本不会“卸载”它们。谢谢Alex。我看到了一篇关于测试加载脚本的文章,我将使用类似的东西。