[Asp.net Mvc]通过UrlHelper扩展为js,css静态文件添加版本号

写在前面

在app中嵌入h5应用,最头疼的就是缓存的问题,比如你修改了一个样式,或者在js中添加了一个方法,发布之后,并没有更新,加载的仍是缓存里面的内容。这个时候就需要清理缓存才能解决。但又不想让webview每次都清理缓存,每次都去加载最新的,显然会影响性能。

解决办法

解决缓存的方式之一就是在url后面添加一个随机数可以实现,但我们并不希望每次都是新请求,所以这个时候,我们可以在js或者css的后面添加一个版本号,第一次请求仍是新的请求,之后会将静态文件进行缓存。一是解决了修改后,无法立即渲染的问题,二是在之后的请求中也会缓存静态文件。

在asp.net mvc中,我们会把静态文件放在_Layout.cshtml这个文件中,如下图

从上面可以看到UrlHelper的类,有了解过HtmlHelper扩展的,很容易想到扩展UrlHelper。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace System.Web.Mvc
{
    public static class MyUrlHelper
    {
        public static string Scrpit(this UrlHelper helper, string value)
        {
            string jsCssVersion = ConfigurationManager.AppSettings["Js_CSS_Version"];
            if (string.IsNullOrEmpty(jsCssVersion))
            {
                return helper.Content(value);
            }
            else
            {
                return helper.Content(string.Format(value + "?_v={0}", jsCssVersion));
            }

        }
    }
}

浏览页面

第一次访问

刷新页面

可以看到http状态码变为了304 Not Modified状态。

posted @ 2016-04-20 16:01  wolfy  阅读(3316)  评论(0编辑  收藏  举报