Http协议应用
来源:互联网 发布:四平市信访局网络 编辑:程序博客网 时间:2024/05/29 18:23
在缓存时间内,浏览器将不会重新访问服务端获取资源。
Http1.0的控制方法是一个过期日期,设置当前时间加上一个过期时间,用response.setDataHeader()可以1900年来豪秒为参数,会转换为Http协议的时间格式输出。
Http1.1的控制方法简单点,直接输出过期时间即可,以秒为单位。
//Http 1.0 headerresponse.setDateHeader("Expires", System.currentTimeMillis() + expiresSeconds * 1000);//Http 1.1 headerresponse.setHeader("Cache-Control", "max-age=" + expiresSeconds);
如果要设置无缓存,可设置如下:
//Http 1.0 headerresponse.setDateHeader("Expires", 0);//Http 1.1 headerresponse.setHeader("Cache-Control", "no-cache");
WebUtils中提供了这两个函数,如果在Servlet代码中可以自行使用。但如果是静态内容,因为在Tomcat里貌似没有配置的地方,所以要使用ResponseHeaderFilter来拦截配置,见showcase的web.xml, 其中31536000是一年的秒数。
<filter><filter-name>expiresHeaderFilter</filter-name><filter-class>org.springside.modules.web.ResponseHeaderFilter</filter-class><init-param><param-name>Cache-Control</param-name><param-value>public, max-age=31536000</param-value></init-param></filter><filter-mapping><filter-name>expiresHeaderFilter</filter-name><url-pattern>/img/*</url-pattern></filter-mapping>
如果没有设置缓存头,IE会认为没有缓存,而FireFox会看有没有设置LastModify头,如果有设置,缓存时间为 (当前时间-lastModify)/10.
1.2 Last-Modified与Etag
但无缓存或缓存过期后,浏览器再次向服务端发起内容请求时,会附带Last-Modified或Etag header, 如果服务端发现没有更改则直接返回304,无需再传输一遍内容。
Last-Modified是一个日期,同样使用response.setDataHeader()输出。而Http1.1 ETag则是一个自定义字符串,使得可以更灵活的业务意义来进行控制,但缺点是必须由Etag的发出者才能解释字符串的意义。
WebUtils中提供了设置两种Header 与判断两种Header是否已修改的函数。
1.3 压缩传输
对于大量的文本文件,使用Gzip压缩传输能大大缩减传输内容,如dojo.js 从78k压到了28k。 但压缩只对文本有效,对二进制数据几乎没什么作用,对太小的文本也没什么必要。
可以简单配置tomcat的server.xml,同时规定只压缩文本类型,且规定gzip文件的最小大小,
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" compression="on" compressionMinSize="2048" compressableMimeType="text/html,application/xhtml+xml,text/xml,text/css,text/javascript" />也可以参考showcase的StaticContentServlet在代码中进行处理,注意如果要设置content-length,必须要设置压缩后的大小,否则就不要设置content-length,用http 1.1的trunked encoding传输好了。1
2. YUICompressor
CSS/JavaScript们经过紧凑编码后可以省下很大很多的内容。YUICompressor自称比Dojo的压缩工具和JSMIN都要好的一点。
参考showcase中的bin/yuicompressor.bat, 压缩命令如下
java -jar ../lib/yuicompressor-2.3.6.jar -o ../webapp/css/yui.css ../webapp/css/yui-src.css
- HTTP协议应用
- Http协议应用
- Http协议应用
- HTTP协议之应用
- Http协议应用
- HTTP协议及应用
- 应用层协议------HTTP
- 应用层HTTP协议详解
- 应用层协议分析-HTTP
- 应用层的HTTP协议
- 应用层之HTTP协议
- QT:HTTP协议简单应用
- HTTP协议?HTTP上的应用?
- 协议分析与应用-http
- Delphi编程中Http协议应用
- Delphi编程中Http协议应用(一)
- servlet的应用和http协议介绍
- HTTP协议与Servlet的应用
- svn:Server sent unexpected return value (403 Forbidden) in response to MKACTIVITY
- __attribute__机制介绍
- Java中的DateFormat用法举例
- 如果雨打,就走在雨里,不快不慢
- 今天我升为了高中生
- Http协议应用
- HDU 4034 floyd
- poj 2112 Optimal Milking(二分+最大流)
- 改变WP程序启动的页面Page.xaml
- response.setHeader()的用法
- C++树的实现
- 【shell】scp传送的压缩与限速
- V4L2框架分析学习
- Windows Server系统服务介绍及优化