js/css文件修改后浏览器本地缓存解决

本文实例讲述了让html页面随js的修改来更新缓存的实现方法。分享给大家供大家参考。具体实现方法如下:

很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们修改后调试和发布是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看。

一、后台编写一个 UrlCommon的js/css url的连接操作类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Web;
 6 using System.Web.Optimization;
 7 
 8 namespace WebApp.Common
 9 {
10     public abstract class UrlCommon
11     {
12         public abstract string _defaultTagFormat { get; }
13         public abstract string _verTagFormat { get; }
14         protected internal virtual String ComputeSHA1(String fileName)
15         {
16             String hashSHA1 = String.Empty;
17             if (System.IO.File.Exists(fileName))
18             {
19                 using (System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
20                 {
21                     System.Security.Cryptography.SHA1 calculator = System.Security.Cryptography.SHA1.Create();
22                     Byte[] buffer = calculator.ComputeHash(fs);
23                     calculator.Clear();
24                     StringBuilder stringBuilder = new StringBuilder();
25                     for (int i = 0; i < buffer.Length; i++)
26                     {
27                         stringBuilder.Append(buffer[i].ToString("x2"));
28                     }
29                     hashSHA1 = stringBuilder.ToString();
30                 }
31             }
32             return hashSHA1;
33         }
34         public virtual IHtmlString Url(string url, bool ver = true)
35         {
36             string absUrl = System.Web.Optimization.Scripts.Url(url).ToString();
37             string strUrl = string.Format(this._defaultTagFormat, absUrl);
38             if (ver)
39             {
40                 string filePath = System.Web.HttpContext.Current.Server.MapPath(url);
41                 string verNum = this.ComputeSHA1(filePath);
42                 //if (!string.IsNullOrWhiteSpace(verNum) && verNum.Length > 16)
43                 //{
44                 //    verNum = verNum.Substring(0, 16);
45                 //}
46                 strUrl = string.Format(this._verTagFormat, absUrl, verNum);
47             }
48             return new HtmlString(strUrl);
49         }
50     }
51     public class UrlScript : UrlCommon
52     {
53         public static UrlScript Instance = new UrlScript();
54         public override string _defaultTagFormat
55         {
56             get { return "<script src=\"{0}\"></script>"; }
57         }
58         public override string _verTagFormat
59         {
60             get { return "<script src=\"{0}?v={1}\"></script>"; }
61         }
62     }
63     public class UrlStyle : UrlCommon
64     {
65         public static UrlStyle Instance = new UrlStyle();
66         public override string _defaultTagFormat
67         {
68             get { return "<link href=\"{0}\" rel=\"stylesheet\"/>"; }
69         }
70         public override string _verTagFormat
71         {
72             get { return "<link href=\"{0}?v={1}\" rel=\"stylesheet\"/>"; }
73         }
74     }
75 }
View Code

二、view页面添加智能提示

三、使用方法

view页面添加css/js的方法

@UrlStyle.Instance.Url("~/CSS/monther-footer.css")

@UrlScript.Instance.Url("~/Scripts/common.js")

页面加载效果

只要文件修改SHA1的值就会改变,对应的?v=xxxxxxx也会随着改变,这样浏览器就会自动下载新的文件,只要文件不做修改就可以用本地的缓存,两不误的好办法

转载于:https://www.cnblogs.com/fsf869433932/p/t_201606221455.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js中报错 ajax不存在,AJAX

AJAX : Asynchronous JavaScript and XML 异步JavaScript和XML (XML更多的是被JSON格式替代使用)AJAX 只做一件事情&#xff1a;异步获取数据&#xff0c;更为重要的是还是JS对返回的数据进行操作。异步获取数据极大地改善web与用户的数据交互(如下图左侧为传统web,右侧为借…

iOS开发内购图文教程

2015年最全的内购图文教程&#xff0c;首先是填各种资料&#xff0c;最后是代码&#xff0c;废话不多说&#xff0c;直接上图 第一部分协议 第一步.png第二步.jpg第三步.jpg第四步.png第五步.png第六步.png第七步.jpg第八步.jpg第九步.jpg第十步.pngCNAPS CODE 查询地址https:/…

cisco服务器维修,面向终端的AMP控制台的思科维护的排除列表更改

简介本文档介绍添加到思科维护的例外项的更改。思科维护的例外项由思科创建和维护&#xff0c;以便在面向终端的高级恶意软件防护(AMP)连接器和防病毒、安全或其他软件之间提供更好的兼容性&#xff0c;这些例外项可以添加到应用的新版本。作者&#xff1a;思科工程师Caly Hess…

服务器怎么用光驱装系统教程,使用光驱重装系统详细教程

电脑系统在用了很长一段时间后总会出现卡顿或者其他的问题&#xff0c;这时很多小伙伴后就会选择进行系统的重装&#xff0c;系统的重装也是有多种方法的&#xff0c;比如使用U盘进行重装&#xff0c;或者使用光驱&#xff0c;而今天小编要给大家分享的就是使用光驱重装系统的详…

struts2 Eclipse 中集成strust2开发框架实例

下面通过建立一个小的实例具体来说明Eclipse 集成struts2,以下实例采用的为 struts2 版本为 struts2 2.2.3.1 为应用. 1. 下载struts2的开发包 第一步: 在浏览器中输入 http://apache.org 第二步:在apche的页面项目中选择struct 点击连接进入相关页面 第三步: 点击download选择…

电脑电池,笔记本电池校正,教您怎样校正笔记本电脑电池

只要留个心&#xff0c;就会发现身边的很多人都在使用着笔记本电脑&#xff0c;不过笔记本电脑使用久了&#xff0c;电池可能会出现虚电的情况&#xff0c;导致我们的笔记本的续航时间变短了&#xff0c;这时候需要我们手动对笔记本电池进行校准&#xff0c;为此&#xff0c;小…

苹果手机语音备忘录在哪_苹果手机的备忘录竟然还有这么多隐藏功能?以前不知道真是可惜了!...

使用iPhone手机的用户&#xff0c;不知道有没有仔细研究过手机自带的备忘录功能&#xff0c;它不仅仅只有备忘的功能哦&#xff0c;还有很多隐藏的小技巧&#xff0c;今天带大家一起来一探究竟吧&#xff0c;一起玩转手机的备忘录功能吧&#xff01;1.编辑排版在备忘录进行文本…

杂牌手柄模拟xboxone手柄_震了,Xbox One 精英手柄2代摸了一次就不舍得放下了

首发于机核网&#xff0c;作者xizongbu近日我有幸提前拿到了微软 Xbox One 的精英手柄2代&#xff0c;这款产品在 E3 2019 微软展前发布会上正式公开&#xff0c;相信不少追求操作极致体验的玩家早就望眼欲穿了。更多的定制空间&#xff0c;更细致入微的体验优化&#xff0c;Xb…

Microsoft Hololens开发上手(4)

磨刀不误砍柴功&#xff0c;我们总有一些小工程师&#xff0c;不了解全貌&#xff0c;不好好思考&#xff0c;上手就开始写代码&#xff0c;这种做法是非常不可取的。对于Hololens的开发也是一样。今天我们来重点看看Hololens里面的一些概念&#xff0c;比如Holograms, 坐标系,…

wo-27s管理员账户和密码_Mac管理员忘记密码怎么办?

在使用Mac电脑时&#xff0c;为了安全很多用户通常都会设置管理员密码。不过如果不小心忘记Mac管理员密码怎么办&#xff1f;幸运的是&#xff0c;有些方法可以重置Mac密码并重新获得访问权限。下面小编就教给大家几种重置用户密码的方法。未开启FileVault的用户方法一&#xf…

电脑怎么彻底删除软件_电脑在使用的过程中如何彻底删除今日热点广告弹窗的方法...

电脑在使用的过程中如何彻底删除今日热点广告弹窗的方法在今日热点弹窗弹出来之后&#xff0c;我们在键盘上同时按下“CtrlAltDel”键&#xff0c;调出“任务管理器”&#xff0c;在任务管理器进程找到“今日热点”&#xff0c;我们右键点击“今日热点”选择“打开文件所在的位…

不用电脑怎么设置苹果铃声_苹果手机怎么设置铃声?完整教程分享

很多人的苹果手机铃声设置的都是用原始默认的铃声&#xff0c;因为苹果手机不支持直接将音乐设置为铃声&#xff0c;而且大多数人不清楚苹果怎么换铃声。当然安卓系统就没有这个问题啦。但是苹果的默认铃声听久了也挺腻的&#xff0c;鉴于有不少粉丝在问苹果手机怎么设置铃声&a…

mysql优化之连接优化

Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 连接优化 连接优化主要指客户端连接数据库以及数据库为响应客户端的请求而打开数据表和索引的过程中涉及到的参数调整。原文可以参考这里或者这里。(原文链…

家用电脑配置_游戏搬砖必看教程,游戏工作室电脑如何配置

文章只针对新手对电脑硬件配置了解&#xff0c;大佬可直接关闭&#xff0c;电脑如何配置只代表个人观点!想游戏搬砖赚钱&#xff0c;资金方面也有这个能力的小伙伴可能对手机开那么几个号无法满足&#xff0c;那么今天要说的就是如何利用电脑多开&#xff0c;来达到利益最大化这…

基于MATLAB的Dijkstra算法实现及案例分析

摘要:为研究两地点之间距离&#xff08;或耗时&#xff09;最短路线规划&#xff0c;采用MATLAB编程的方法来实现&#xff0c;并利用Floyd算法记录距离&#xff08;或耗时&#xff09;最短路线。在不考虑各种影响因素的情况下&#xff0c;以随机小样本数据为例进行演示&#xf…

win10共享打印机怎么设置_关于win10网络共享,选择“启用文件和打印机共享”之后,无法保存设置的解决办法...

写个流水账&#xff0c;把我解决这个问题的前因后果记录一下&#xff0c;供遇到相同问题的同学参考之用&#xff0c;希望能有点启发。这个问题的来源&#xff0c;是我想利用客厅的小米盒子&#xff0c;访问同一个路由器局域网之下的pc&#xff0c;直接访问共享文件的方式&#…

MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)

BP神经网络&#xff1a;是1986年由Rumelhart和McClelland为首的科学家提出的概念&#xff0c;是一种按照误差逆向传播算法训练的多层前馈神经网络&#xff0c;是目前应用最广泛的神经网络。神经网络是把生活中的常见情节推广到计算仿真的范畴&#xff0c;这样的启发式算法还有许…

前端性能优化知识,包括css和js

作者&#xff1a;野次链接&#xff1a;http://www.zhihu.com/question/33032042/answer/95948831来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 1. 减少HTTP请求次数 尽量合并图片、CSS、JS。比如加载一个页面&#xf…

快速理解编程结构_为什么系统编程全都用英文而不用中文?听完专家的解释恍然大悟!...

全球博弈(quanqiuboyi)——不一样的观点&#xff0c;不一样的解读&#xff0c;8000万人订阅的超级微信大号。不关注时事&#xff0c;你将会被这个世界抛弃&#xff0c;点击标题下蓝字“全球博弈”关注&#xff0c;我们将为您提供有价值、有意思的时事解读。人类走进科技发展的道…

用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?

“只要一分钟&#xff0c;我就能看清一对夫妻感情的状况。”从事情感咨询几十年的行业前辈告诉我&#xff0c;她的诀窍就是——听他们之间如何称呼对方。“大部分情侣在恋爱时都会给对方起一个专属的爱称&#xff0c;比如&#xff1a;小白猪、大宝宝之类的&#xff0c;总之很亲…