IIS 仍然加载旧 javascript 文件。如何更新或告诉 iis load/take 个新的 javascript 个文件?

IIS still load old javascript file. How to update or tell iis to load/take new javascript files?

我已经在服务器上部署了一个新更新(MVC 5 应用程序)。虽然 iis 加载了我在视图、css 等中的所有更改,但它不会加载 javascript 文件中的更改。它仍然加载旧版本的 javascript 文件。

physical file in folder is different than iis loaded file

我尝试了以下但没有任何改变:

我试图复制其中一个 js 文件并将其重命名。它有效,因为 iis 将其视为一个新文件。但这不是解决方案。这个问题还有其他解决方案吗?

在我的网站压缩设置中禁用动态和静态内容压缩设置解决了我的问题。

IIS website Compression setting

如果您使用无法访问的主机来修改 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">