- 浏览: 289791 次
- 性别:
- 来自: 龙城
最新评论
-
redey:
这垃圾东西,1.6以上JDK不支持
Jocky混淆JAVA代码(保护你的JAVA项目) -
u012907473:
水电费是否是否
js页面缓存的一个解决办法 -
jackson200:
讲解的很详细!
Jocky混淆JAVA代码(保护你的JAVA项目) -
jamesqq79:
下载解压缩后,不知是何文件格式,用PDF阅读器打不开。
Java程序员的推荐阅读书籍之十《Agile Java》 -
meimei727:
<!-- 给页面文件中的js和css引用增加版本号 -- ...
利用ant进行项目发布
由于效率的缘故,浏览器通常会缓存js文件,这就给我们带了一个问题:当服务器端部署的项目中的js文件进行了修改后,如果再客户端不手动去刷新一次页面,js的修改效果就不会起作用,因为浏览器还是用的缓存在本地的js文件。
为了解决这个问题,我们采用了这个方案,每当发布新的版本部署到服务器上的时候,我们给html页面中引用的js增加一个新的后缀,形如版本号的东西。
<script language="javascript" src="view/shell/login.js?version=20081112050245"></script>
为了自动完成这一功能,我们使用了ant,写了一个ant task来完成该项功能。
/** * 该任务遍历web目录,找出所有的模板文件,给js和css的引用加上版本号 * * @version 1.0 2008-07-02 * @author huangyuanmu * @since JDK 1.5.0_8 */ public class AddJsAndCssVersionToVm extends Task { private String path; public void execute() throws BuildException { Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss"); String version = df.format(date); addVersionToVm(path, version); } /** * 遍历web目录中的vm文件,给js和css的引用加上版本号 * * @author huangyuanmu 2008-07-02 * @param path */ private void addVersionToVm(String path, String version) { File dir = new File(path); File[] files = dir.listFiles(); if (files == null) return; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { addVersionToVm(files[i].getAbsolutePath(), version); } else { String strFileName = files[i].getAbsolutePath().toLowerCase(); // 如果是符合条件的文件,则添加版本信息 if (strFileName.endsWith(".vm") || strFileName.endsWith(".html") || strFileName.endsWith(".jsp")) { // RandomAccessFile raf = null; InputStream is = null; OutputStream os = null; List<String> contentList = new ArrayList<String>(); // 读文件 try { is = new FileInputStream(files[i]); Reader r = new InputStreamReader(is); BufferedReader br = new BufferedReader(r); String line = null; while ((line = br.readLine()) != null) { String modLine = getModLine(line, version); if (modLine != null) { line = modLine; } line = line + "\r\n"; contentList.add(line); } // 关闭流 br.close(); r.close(); } catch (Exception e) { System.out.println("读文件失败"); e.printStackTrace(); } finally { if (null != is) { try { is.close(); } catch (Exception e) { e.printStackTrace(); } } } // 写文件 try { os = new FileOutputStream(files[i]); Writer w = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(w); for (Iterator<String> it = contentList.iterator(); it .hasNext();) { String line = it.next(); bw.write(line); } // 更新到文件 bw.flush(); // 关闭流 bw.close(); w.close(); } catch (Exception e) { System.out.println("写文件失败"); e.printStackTrace(); } finally { if (null != os) { try { os.close(); } catch (Exception e) { e.printStackTrace(); } } } } } } } /** * 查找行中是否有js或css的引用,如果有,则加上版本号 * * @author huangyuanmu 2008-07-03 * @param line */ private String getModLine(String line, String version) { // 增加js版本 line.trim(); if (line.startsWith("<script") && line.endsWith("</script>")) { int pos = line.indexOf(".js"); String modLine = line.substring(0, pos) + ".js?version=" + version + "\"></script>"; return modLine; } else if (line.startsWith("<link") && line.endsWith("rel=\"stylesheet\" type=\"text/css\">")) { int pos = line.indexOf(".css"); String modLine = line.substring(0, pos) + ".css?version=" + version + "\" rel=\"stylesheet\" type=\"text/css\">"; return modLine; } else { return null; } } public void setPath(String path) { this.path = path; } }
当然,这个程序的实现还有一些缺点。首先,模板文件中对js和css的引用必须规范,符合程序代码中描述的格式。另外,不管文件内容有没有改变,都加上了新的版本号,这会用户访问时不必要的网络流量,可能会对页面展现的速度产生一些影响。
ant的build脚本文件在另外一篇中(http://huangyuanmu.iteye.com/admin/blogs/493144)。
发表评论
-
autochk program not found 蓝屏重启问题解决
2012-04-17 10:54 13841起因: 因为硬盘空间不够,所以把原来的双系统中的ubu ... -
IOS开发一些资源
2012-02-06 16:07 1365从别的地方看到的,多谢作者,现贴在这里备忘。 在线教程 ... -
发现一个好东东,可以让浏览器跟本地桌面交互,哈哈
2011-09-08 17:35 1248http://gears.google.com/ -
nodejs开发运行环境搭建
2011-08-18 15:03 4403一. geddy 开发运行环境搭建 geddy是基 ... -
javascript来势凶猛
2011-08-15 17:22 1215引子 java编程弄了7,8个年头了,也 ... -
Oracle驱动包装
2011-07-06 17:06 2036见附件。 -
javaeye域名变了
2011-04-01 10:31 1280javaeye域名变了,才发现,哈哈,mark下。 -
拥抱敏捷
2011-01-15 17:27 1100前言 有关项目管理和软件开发方 ... -
重温设计模式
2011-01-13 10:27 1165策略模式: 定义了算 ... -
jsoup,html解析的利器
2011-01-07 09:21 1208http://jsoup.org/download -
关于html表格复制到excel
2010-09-09 14:04 5875刚才一个朋友问我这个事情,我拍脑袋想了一下,给他答复不可能,因 ... -
Java 路径 System.getProperty("key")的参数key
2010-09-02 14:37 1289java.version ... -
这种需求,大家看看有没有比较好的解决方案
2010-06-25 09:47 2342在我们的应用中,碰到了如图所示的一种网络结构。 重新描 ... -
java中singleton的几种实现方式
2010-06-24 15:08 1475传统的最简单的方式 这种模式有一个缺点就是不能实现延 ... -
oracle分页查询数据重复问题的解决
2010-06-24 11:00 3429在oracle分页查询中,我们采用类似以下所示的公认的比较高效 ... -
ubuntu10.04中安装使用IE6
2010-06-21 09:55 2597在用ubuntu910的时候,已经装了一遍IE了,但是升级到1 ... -
今天发现的两个有价值的东东
2010-06-17 15:45 1520其一,iRedMail,开源邮件解决方案。 其 ... -
ubuntu 10.04 中安装mysql5.1.4
2010-06-17 15:28 1837自从升级到10.04以后,mysql就不正常,卸载装了n次,均 ... -
升级到ubuntu 10.04,wine中的ie不正常了
2010-06-11 10:01 1707ubuntu上也折腾了半年了,日常工作生活基本没有太多的障碍了 ... -
升级到ubuntu10.04,mysql不能用了
2010-06-11 09:53 18789.10版本用了半年了,10.04发布了,看了10.04的宣传 ...
相关推荐
清理浏览器的缓存和Cookies也是解决网页错误的有效方式之一。缓存中的过期文件或Cookies可能与当前网页版本不匹配,导致加载错误。定期清理这些数据可以避免此类问题的发生。 ### 五、更新DirectX DirectX是微软...
3. 在某些情况下,如果遇到网页显示不正常的问题,清理缓存可能是解决办法之一,因为这能确保浏览器重新获取最新的网页数据。 在“压缩包子文件的文件名称列表”中看到的"IE缓存.e"可能是解压后会得到的一个文件夹...
解决办法是对静态内容和无登录需求的页面启用代理缓存,而对需要验证的页面则避免使用。地域问题则涉及多语言支持,通过设置`Accept-Language`头信息,确保不同语言版本的正确缓存。 服务器端的缓存,如内核缓存,...
解决办法:刷新页面,清除浏览器缓存,检查浏览器的兼容性设置,或尝试其他浏览器查看是否同样问题。 4. 打不开特定网站 解决办法:检查是否被防火墙或安全软件阻止,尝试更改DNS设置,或者联系网站管理员确认...
本文将详细讲解如何利用Servlet来解决网页缓存问题。 首先,我们需要理解浏览器缓存的工作原理。浏览器为了提高用户体验,会自动缓存访问过的网页内容,包括HTML、CSS、JavaScript文件以及图片等资源。当用户再次...
解决办法包括设置合理的缓存过期时间,使用互斥锁,以及提供冗余缓存。 - 缓存击穿:针对热点数据的请求,导致数据库压力过大。可采用预热策略,即在缓存失效前先更新缓存。 综上所述,大数据时代的性能与缓存优化...
Angularjs是一款用于构建Web应用程序的开源JavaScript框架,它是Google的一个项目,并由一个活跃的社区支持。360安全浏览器是一款由中国公司奇虎360开发的浏览器,支持多种模式浏览,包括兼容模式,用于模拟旧版...
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。接下来通过本文给大家介绍IE8下Ajax缓存问题及解决办法,一起看下吧
### 网页输入框不能输入解决办法 在日常使用浏览器的过程中,我们经常会遇到网页上的输入框无法正常使用的状况,具体表现为输入框始终呈现灰白色的状态,无法聚焦光标进行文字输入。这种情况不仅影响用户体验,同时...
WebSphere 常见问题及解决办法详解 在本文中,我们将详细探讨 WebSphere 中的一些常见问题及其解决方法。WebSphere 是一个基于 Java 的应用服务器,广泛应用于企业级应用开发中。然而,在实际开发和部署过程中,...
解决办法是在`.ajax`的success回调中重新绑定事件: ```javascript $.ajax({ url: 'your-url', type: 'GET', success: function(data) { // 更新DOM $('#target').html(data); // 重新绑定事件 $('#new...
### IE6无法打开INTERNET站点的解决办法 #### 背景与问题描述 在早期的互联网发展阶段,Internet Explorer 6(简称IE6)作为微软的一款浏览器,在很长一段时间内占据了非常重要的位置。然而,随着时间的发展和技术...
2. **JavaScript错误**:某些网页依赖JavaScript运行,如果出现JavaScript错误,可能导致页面功能失效。解决方法是更新浏览器至最新版本,或者开启JavaScript支持。 3. **兼容性问题**:不同浏览器对网页标准的实现...
网页中的区域名错误通常指的是由于各种原因导致网页无法正常加载或执行JavaScript代码时出现的问题。这类问题可能影响用户的浏览体验,甚至可能导致某些功能无法正常使用。本文将详细介绍如何解决这类问题。 首先,...
IE 浏览器卡死提示是否停止运行此脚本的解决办法 在使用 IE 浏览器时,经常会出现卡死的情况,提示是否停止运行此脚本,这不仅影响用户体验还会导致浏览器崩溃。这个问题的解决方法可以归结为禁用脚本功能选项的...
当需要更新CSS、JavaScript或背景图时,传统的解决办法是更改文件名,迫使浏览器认为这是一个全新的文件,从而加载新的版本。虽然有效,但这需要手动操作,且不易于维护。 更为优雅的解决方案是通过添加版本号或...
- 清理浏览器缓存是一个简单有效的办法,可以确保加载最新的CSS或JS文件。 - 在部署新版本的应用程序之前,也可以考虑更改文件名(如添加时间戳),这样浏览器会认为这是一个新的文件而重新下载。 4. **框架配置...
浏览器缓存是网络浏览过程中非常重要的一个组成部分,它存储了我们访问过的网页的静态资源,如图片、JavaScript 文件和 CSS 样式表等,目的是为了加快网页加载速度,提高用户体验。然而,有时缓存可能会导致网页加载...