项目进入二期了每次领导们在外面访问在云计算机上的项目总是抱怨说页面每次都打开的很慢,而且数据量都很小,一天到晚的催促我们解决这个问题,唉!没办法这个问题落在我的身上了,最开始还以为是程序代码写的问题,装了一个IEHttpAnalyzer测了一下页面的请求响应时间大部分时间都耗在JS的下载上面了,当我查看页面源代码的时候惊呆了,基本上每个页面都引用了10~18个JS
没办法只能考虑是否能删减或者压缩,经过几轮测试后了后者,但是在考虑压缩JS的时候传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意;现在的问题是这种动态的压缩会导致服务器CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将JS预先通过7-zip压缩好)
一.下面讲述将JS压缩成gzjs以及在tomcat中的应用的步骤
1.使用jquery.js通过7-zip压缩,压缩的时候选择压压缩格式为:GZip,然后压缩结束后将生成一个jquery.js.gz,将它更名成jquery.gzjs
2.设置header,我编写了一个简单的HeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip
3.web.xml中的配置
<filter>
<filter-name>HeaderFilter</filter-name>
<filter-class>
com.oa.filter.HeaderFilter
</filter-class>
<init-param>
<param-name>headers</param-name>
<param-value>Content-Encoding=gzip</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HeaderFilter</filter-name>
<url-pattern>*.gzjs</url-pattern>
</filter-mapping>
4.HeaderFilter代码
package com.oa.filter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HeaderFilter implements Filter {
Map headers = new HashMap();
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
if(req instanceof HttpServletRequest) {
doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain);
}else {
chain.doFilter(req, res);
}
}
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
for(Iterator it = headers.entrySet().iterator();it.hasNext();) {
Map.Entry entry = (Map.Entry)it.next();
response.addHeader((String)entry.getKey(),(String)entry.getValue());
}
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
String headersStr = config.getInitParameter("headers");
String[] headers = headersStr.split(",");
for(int i = 0; i < headers.length; i++) {
String[] temp = headers[i].split("=");
this.headers.put(temp[0].trim(), temp[1].trim());
}
}
}
5.以下在JSP上引用即可
<script src="${pageContext.request.contextPath}/js/new/jquery.gzjs"></script>
分享到:
相关推荐
- **缓存策略**:开启gzip压缩后,应考虑对静态资源设置合适的缓存策略,以减少不必要的压缩计算。 - **文件大小阈值**:对于非常小的文件,压缩可能并不能带来显著的优化,甚至可能因额外的压缩和解压过程而降低...
浏览器则会自动解压这些数据,然后正常执行JavaScript代码。 在使用gzip之前,需要确保服务器支持gzip压缩。大多数现代服务器,如Apache和Nginx,都内置了gzip模块。以下是在Apache和Nginx服务器上启用gzip的简单...
1. **IIS配置:** 在IIS管理器中,选择目标网站,双击“压缩”功能,勾选“静态内容”和“动态内容”的“启用压缩”,然后重启网站应用池使设置生效。 2. **Web.config配置:** 可以通过修改`web.config`文件来开启...
3. **压缩静态资源**:如CSS、JavaScript和图片等,可以预先进行gzip压缩,存储在服务器上,减少每次请求时的压缩开销。 4. **平衡压缩级别**:gzip有多个压缩级别,更高的级别意味着更小的文件但更长的压缩时间。...
3. 客户端接收到带有`Content-Encoding: gzip`头的响应后,会自动解压内容并正常渲染页面。 对于IIS 6.0服务器启用Gzip压缩的步骤如下: 1. 打开IIS管理器,右键点击“网站”选择“属性”,在“服务”选项卡中勾选...
8. **网页性能**:遵循最佳实践,如减少HTTP请求、合并CSS和JavaScript文件、启用GZIP压缩等,以提升网站加载速度。 9. **版本控制**:使用Git进行版本管理,便于团队协作和代码备份。 10. **部署**:将网站上传至...
在开发环境中,gzip也常用于HTTP压缩,服务器可以根据浏览器的支持情况发送gz压缩过的HTML、CSS、JavaScript等静态资源,减少网络传输的数据量,提高页面加载速度。此外,许多版本控制系统如Git也支持对提交的文件...
在网络传输中,服务器通过GZIP算法对HTML、CSS、JavaScript等文本文件进行压缩,然后发送到客户端(如浏览器),客户端接收到压缩后的数据后进行解压,再渲染页面。由于压缩后的数据量小,所以传输速度快,尤其是在...
- **解压文件**:`gzip -d filename.gz`。 - **查看压缩文件内容**:`gzip -dc filename.gz | less`。 - **列表压缩文件内容**:`gzip -l filename.gz`。 #### 七、总结 本文详细介绍了如何在Apache服务器上通过...
这主要得益于Gzip算法本身的设计,它能够处理多种编码格式,并在压缩和解压过程中保持数据的完整性。 然而,值得注意的是,虽然Gzip压缩能显著减少数据传输量,但它也会增加服务器的CPU负载。因此,在启用压缩时,...
当用户请求页面时,IIS服务器会利用gzip.dll对HTML、CSS、JavaScript等静态内容进行压缩,然后将压缩后的数据发送给客户端,客户端的浏览器再解压这些内容并呈现网页。 在描述中提到的“这是安装iis必须的组件”,...
此外,启用Apache的deflate模块可以显著提升网站速度,因为它能对动态和静态内容进行压缩,如HTML、JavaScript和CSS文件。在httpd.conf中,通过加载`mod_deflate.so`模块并设置相应的压缩级别(如9级,代表最高压缩...
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定需要压缩的文件类型 gzip_comp_level 6; # 设置压缩级别,范围...
GZIP压缩技术遵循HTTP/1.1协议,通过检测浏览器发送的`accept-encoding`头部信息来判断是否支持压缩,若支持,服务器则返回压缩后的响应内容,浏览器负责解压并呈现页面。 **纯Tomcat服务器的GZIP配置** 在Tomcat...
SpringBoot是一款基于Java的轻量级框架,由Pivotal团队开发,旨在简化Spring应用的初始搭建...如果需要深入学习,可以查阅解压后的"SpringBoot静态资源处理共5页.pdf"文档,该文档可能包含更详细的操作步骤和实践案例。
2. **gzip压缩**:为了提高网站性能,Nginx提供了gzip静态内容压缩功能,可以减小传输数据量,加快页面加载速度。在Nginx配置文件中,我们需要添加或修改以下部分来启用gzip: ```nginx gzip on; gzip_types text...
在互联网环境中,整站压缩是指对整个网站的静态资源,如HTML、CSS、JavaScript、图片等进行压缩,以减小文件大小,从而提高页面加载速度和降低服务器带宽消耗。这是网站性能优化的一种常见方法。常见的压缩方式有...
静态资源通常包括HTML、CSS、JavaScript文件、图片等,这些文件在客户端浏览器中可以直接被解析和执行。SpringBoot默认提供了对静态资源的处理能力,以便我们能够方便地展示页面并提供用户体验。 1. **静态资源目录...
其中,gzip压缩技术就是一种常见的优化手段,它能显著地减小HTML、JavaScript、CSS等静态资源的大小,从而提高页面加载速度,提升用户体验。本文将详细介绍如何在J2EE环境中实现gzip压缩,并探讨其原理与最佳实践。 ...