如果您使用无法访问的主机来修改 IIS 设置。您可以将文件版本放在像<script src='js/script.js?ver=1.1'></script> 这样的脚本标记之后,以强制iis 在页面加载时获取新文件。当您编辑内容时,请更改该版本。
我实现了一个用于我的项目的自定义 js/css 包,内容版本基于 webapp 版本。运行新构建时,所有 js 和 css 都会刷新:
using System;
using System.IO;
using System.Reflection;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
namespace WebUtilities
{
public static class CustomWebUtility
{
public static IHtmlString ScriptsRender(string bundlePath)
{
var contentVersion = GetWebappVersion();
return Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?ver=" + contentVersion + "\"></script>", bundlePath);
}
public static IHtmlString StylesRender(string bundlePath)
{
var contentVersion = GetWebappVersion();
return Styles.RenderFormat("<link href=\"{0}?ver=" + contentVersion + "\" rel=\"stylesheet\">", bundlePath);
}
/// <summary>
/// Get web app version
/// </summary>
/// <returns>Webapp version with format: {major}.{minor}.{revision}</returns>
public static string GetWebappVersion()
{
var version = string.Empty;
Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version;
version = String.Format("{0}.{1}.{2}", assemblyVersion.Major, assemblyVersion.Minor, assemblyVersion.Revision);
return version;
}
}
}
BundleConfig.cs
// js
bundles.Add(new ScriptBundle("~/bundles/js").Include(
"~/Scripts/pages/base.js",
"~/Scripts/pages/somescript.js"));
// css
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/css/base.css",
"~/Content/css/base-mobile.css"));
像普通的 ScriptBundle 和 StyleBundle 一样使用它:
<head>
@CustomWebUtility.ScriptsRender("~/bundles/js")
@CustomWebUtility.StylesRender("~/Content/css")
</head>
结果:
<script type="text/javascript" src="/Scripts/pages/base.js?ver=1.2.21503"></script>
<link href="/Content/css/base.css?ver=1.2.21503" rel="stylesheet">