【100分】关于js文件自动更新的讨论

丰云 2012-03-28 12:52:54
因为手头维护的这个网站非常复杂庞大,
并且是用的IFRAME搭建的页面框架,
每个页面块都是独立的一个页面,
导致很多修改难以普及。
比如,
现在修改了时间控件的JS,
很多页面都有引用,
如何让这些页面重新下载这个JS文件,
而不是用缓存里的?

试过用
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
清空缓存的方法,
但貌似效果不好,
有些浏览器干脆无效。

大家有没有什么好的方法,
都来说说吧
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
铜臂阿铁木 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 2 楼 的回复:

<script type="...">
document.write("<script src=\"a.js?id="+Math.random()+"\"></script>");
</script>



http://www.cnblogs.com/osoft1983/archive/2008/12/17/1356514.html

脚本又叫活……
[/Quote]

啊,原来是这样,那就用httpmodule吧,然后要做的是屏蔽旧的js文件。然后httpModule去给每个需要这个js的页面增加新的js文件引用。 其余的设计还是4楼那个样子。
铜臂阿铁木 2012-03-28
  • 打赏
  • 举报
回复
<script type="...">
document.write("<script src=\"a.js?id="+GetServerVersion()+"\"></script>");
</script>

服务器将js version写入一个每个页面都有的meta里面(或者tag里面)
GetServerVersion(),从HTML页去取这个version。
风2013 2012-03-28
  • 打赏
  • 举报
回复
一样期待大牛来回答
丰云 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

<script type="...">
document.write("<script src=\"a.js?id="+Math.random()+"\"></script>");
</script>



http://www.cnblogs.com/osoft1983/archive/2008/12/17/1356514.html

脚本又叫活动脚本,说明它是活动的,每次都执……
[/Quote]
这个方法我知道,
只是这个网站非常庞杂,
页面巨多,
这样一个一个的改起来还是很费事的,
更重要的是,
每次都去取新的,
很浪费系统资源。
铜臂阿铁木 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

<script type="...">
document.write("<script src=\"a.js?id="+Math.random()+"\"></script>");
</script>



http://www.cnblogs.com/osoft1983/archive/2008/12/17/1356514.html

脚本又叫活……
[/Quote]

跟用random比较,这样就要求载入js的语句是服务器生成的,不然还要一个个的去改动HTML页。使用后缀random就免除了更新那些HTML页了,不过会增加服务器压力。
铜臂阿铁木 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

<script type="...">
document.write("<script src=\"a.js?id="+Math.random()+"\"></script>");
</script>



http://www.cnblogs.com/osoft1983/archive/2008/12/17/1356514.html

脚本又叫活动脚本,说明它是活动的,每次都执……
[/Quote]

这也是个好办法。
跟孟子说的结合起来就好了。不用Random而是用一个js的版本号。
然后handler去处理。
这样的好处是能统一更新js。
Js1_2_2012.js
Js1_2_2013.js
这样子的,然后用handler来处理后面的版本号。
丰云 2012-03-28
  • 打赏
  • 举报
回复
孟老师,能不能把你这个方法的思路稍微解释下,
我还没反应过来
传递正能量 2012-03-28
  • 打赏
  • 举报
回复
<script type="...">
document.write("<script src=\"a.js?id="+Math.random()+"\"></script>");
</script>



http://www.cnblogs.com/osoft1983/archive/2008/12/17/1356514.html

脚本又叫活动脚本,说明它是活动的,每次都执行,加随机数的方法,保证服务器端的请求每次都不相同,从而客户端不会缓存。

类似的操作,很多就可以成功的
孟子E章 2012-03-28
  • 打赏
  • 举报
回复
你可以写个HttpHandler单独处理js

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧