怎么能使重复的js和css只加载一次呢 本帖最后由 liujw 于 2012-08-01 11:48:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 貌似据说吧js和css放在外部文件里 外部js ,css.浏览器都有缓存。服务器可以设置 这些文件的过期时间。(建议设置30天) 到合并到一个css js吧 用到的引入就行 to aspwebchh:浏览器是会缓存,但那是浏览器的机制,如果有特殊的浏览器不缓存呢,比如IE6之类的。还有一个可能问题就是js里的方法重复执行也许有问题呢。另外就是感觉代码有垃圾,能不能从服务器端就避免呢?to qishuai1986:合并一个也是个办法,但是控件毕竟不是每页都调用,让每个页面都去加载一些没用的js/css的,从设计上感觉不大好吧? 放到控件的后台注册,给你提供一个我以前写的一个方法 public static void IncludeJs(Page oPage, string sKey, string sUrl, int iIndex) { if (oPage == null) oPage = HttpContext.Current.Handler as Page; if (string.IsNullOrEmpty(sKey)) sKey = Path.GetFileName(sUrl); if (oPage.Header != null && !oPage.ClientScript.IsClientScriptBlockRegistered(oPage.GetType(), sKey)) { sUrl = string.Format(" <script src=\"{0}\" type=\"text/javascript\"></script>\n", oPage.ResolveClientUrl(sUrl)); oPage.ClientScript.RegisterClientScriptBlock(oPage.GetType(), sKey, ""); if (iIndex == -1) oPage.Header.Controls.Add(new LiteralControl(sUrl)); else { oPage.Header.Controls.AddAt(iIndex, new LiteralControl(sUrl)); } } else if (oPage.Header == null && !oPage.ClientScript.IsClientScriptIncludeRegistered(oPage.GetType(), sKey)) { oPage.ClientScript.RegisterClientScriptInclude(oPage.GetType(), sKey, sUrl); } } to PoorChild:谢谢,看来我还是等到了不错的办法。希望css也能同样方法解决。不过美中不足我用的ASP.NET MVC 2.0, 有类似的代码吗? 额...mvc的不会..顺手百度了一下 好像有现成的 点我 JQuery div选择器问题 急急急急急急 打印框架网页的问题 为什么得不到cookie? 如何根据访问来源来判断是否允许访问html页? 学习JavaScript 有什么好建议? 百思不得其解的一段javascript程序段 请教JS算法求一解(数据是动态的,有几千种可能的解),麻烦大家帮帮忙! 请教大家一个关于播放器控制的问题 jqgrid里面的触发器只能触发一次,有没有办法能够解决? 怎么在页面中访问其包含的iframe中页面的javascript方法? 求助 js canvas 错误怎么改了 js怎么把input值传给cookie ???
浏览器是会缓存,但那是浏览器的机制,如果有特殊的浏览器不缓存呢,比如IE6之类的。
还有一个可能问题就是js里的方法重复执行也许有问题呢。
另外就是感觉代码有垃圾,能不能从服务器端就避免呢?to qishuai1986:
合并一个也是个办法,但是控件毕竟不是每页都调用,让每个页面都去加载一些没用的js/css的,从设计上感觉不大好吧?
public static void IncludeJs(Page oPage, string sKey, string sUrl, int iIndex) {
if (oPage == null)
oPage = HttpContext.Current.Handler as Page; if (string.IsNullOrEmpty(sKey))
sKey = Path.GetFileName(sUrl); if (oPage.Header != null && !oPage.ClientScript.IsClientScriptBlockRegistered(oPage.GetType(), sKey)) {
sUrl = string.Format(" <script src=\"{0}\" type=\"text/javascript\"></script>\n", oPage.ResolveClientUrl(sUrl));
oPage.ClientScript.RegisterClientScriptBlock(oPage.GetType(), sKey, "");
if (iIndex == -1)
oPage.Header.Controls.Add(new LiteralControl(sUrl));
else {
oPage.Header.Controls.AddAt(iIndex, new LiteralControl(sUrl));
} } else if (oPage.Header == null && !oPage.ClientScript.IsClientScriptIncludeRegistered(oPage.GetType(), sKey)) {
oPage.ClientScript.RegisterClientScriptInclude(oPage.GetType(), sKey, sUrl);
}
}
谢谢,看来我还是等到了不错的办法。希望css也能同样方法解决。
不过美中不足我用的ASP.NET MVC 2.0, 有类似的代码吗?
点我