日期:2014-05-16  浏览次数:20853 次

关于更新发布CSS和JS文件的缓存问题
项目的css和js有更新,发布到服务器上后,怎么样及时的更新发布的css和js。  
怎么解决关于更新发布CSS和JS文件的缓存问题
------解决方案--------------------
连接上加个?XXXX
<link href="/assets/main-df2e9527ae72ae48210bfa0213531ded.css?20140321" media="screen" rel="stylesheet" type="text/css" />

------解决方案--------------------
加版本号.
------解决方案--------------------
我也正好想知道,帮顶
------解决方案--------------------
强制页面不缓存

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Expires = 0;
        Response.CacheControl = "no-cache";
------解决方案--------------------
<link href="/assets/main-df2e9527ae72ae48210bfa0213531ded.css?<%=ConfigHelper.Version%>" media="screen" rel="stylesheet" type="text/css" />

/// <summary>
    /// 读取当前Web.Config中的一些值
    /// </summary>
    public static class ConfigHelper
    {
        //不直接推荐使用ConfigurationManager.AppSettings["Version"]的原因是AppSettings["Version"]中的字符串Version,没有智能提示,另外如果到时不得不修改Version的话,那么就要在系统中到处找,到处修改
        //所以封装在同一个地方
        /// <summary>
        /// 版本
        /// </summary>
        public static readonly string Version= ConfigurationManager.AppSettings["Version"];

如果是mvc的 有更好的方法
在App_Start下面有一个BundleConfig类
你可以看看
------解决方案--------------------
在相关的引用后面加时间戳  
比如 a.js?1
发布一次引用的地方就改一次
------解决方案--------------------
6楼已经很完善的回答你了,不过如果你有html页面之类的话,这个是处理不到的
------解决方案--------------------
有这种方法啊,自己写个handler, 正则遍历返回的html,替换相应的css,js,但这种做法会大量增加服务器压力,而6楼的方法可以说是只劳动第一次,但不能解决html的缓存问题,其实最好还是每次修改哪个文件就手动的把那个改一下,当然这样做的前提是最好你的css或者js文件灰常少,基本都合并到了几个里面,而且css,js必须集中,同样的,对于图片也是有缓存问题的

再补充下:显示声明页面不缓存,只是通知浏览器而已,CDN是不管这个东西的,CDN只缓存静态的东西

引用:
Quote: 引用:

6楼已经很完善的回答你了,不过如果你有html页面之类的话,这个是处理不到的



但是6楼的还是要每个页面每个页面的一个个来改啊。还会动到每个页面的后台代码。  我意思是能不能在一个统一管理页面里边算出哪些页面引用了哪些css和js,然后为这些引用的页面,都重新更新下版本号。不用每个每个的改