- 浏览: 886010 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
在负载均衡环境中(LVS, LoadBalance)为了减少浏览器数据的重复请求操作,一般需要设置 Http Header 的 Etage 和 Expires 告诉浏览器请求数据是否已过期。以下内容主要考虑Apache+squid 环境
ETag Header是文件修改时间、文件大小和inode号生成的校验(checksum),在多台服务器的负载均衡环境下会因部署内容的inode节点差异造成 ETag 的不同,在多台WEB前端做负载均衡的情况下,会因为请求同一个数据但不同机器的 ETag 而影响了响应. 具体表现为用户在第一次请求某一内容时下载而再次时浏览器会发现ETag不同而再次请求下载.。(再次刷新时查看是否响应码为:304)
对于Apache 可以使用 FileEtag 选项配置
Apache 的默认ETag的值总是由文件的索引节点(Inode)、大小(Size)、最后修改时间(MTime)决定
这里我们只需要去掉Inode即可
FileETag MTime Size
具体关于 FileETag 详细内容可以查看Apache官方文档。
Expires用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端. 当缓存中数据失效或过期,才决定从服务器更新数据。
可以使用Apache的mod_expires 模块来设置,这包括控制应答时的Expires头内容和Cache-Control头的max-age指令
ExpiresActive On
ExpiresByType image/gif “access plus 1 month”
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType image/x-icon “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType text/html “access plus 30 minutes”
ExpiresByType text/css “access plus 30 minutes”
ExpiresByType text/js “access plus 30 minutes”
ExpiresByType application/x-javascript “access plus 30 minutes”
ExpiresByType application/x-shockwave-flash “access plus 30 minutes”
以上设置为 图片文件的有效期为从请求文件开始1个月,html,css,js,flash文件的有效期为从请求文件开始30分钟
这里只是一个常规设置,Apache官方文档 对此设置有详细介绍
当设置了expires后,会自动输出Cache-Control 的max-age 信息,这个数值是expires有效期内的秒数,(一个月的数值为2592000) 在这个时间段里,该文件的请求都将直接通过缓存服务器获取,当然如果需要忽略浏览器的刷新请求(F5),缓存服务器squid还需要使用refresh_pattern 选项来忽略该请求
refresh_pattern -i .jpg 1440 50% 10080 reload-into-ims ignore-reload ignore-no-cache ignore-private
以下为实际输出的HTTP Header信息
Date Thu, 07 Aug 2008 07:27:57 GMT
Server Apache
Last-Modified Fri, 27 Jun 2008 07:18:52 GMT
Etag “df6-b8c8cf00″
Accept-Ranges bytes
Content-Length 3574
Cache-Control max-age=2592000
Expires Sat, 06 Sep 2008 07:27:57 GMT
Content-Type image/jpeg
Age 34241
X-Cache HIT from s1.ihompy.com
Connection keep-alive
对于动态页面的缓存如果不是频繁更新的页面数据,可以在squid缓存,只需要注意两点
1. session : 对于需要缓存的数据,一定要关闭session防止在http header 中包括session id 字段
2. Last-Modified 和 Expires 标记: 一般般纯静态页面本身都会有Last-Modified信息,这是由WEB服务器获取文件的最后修改时间生成的,而动态页面需要默认的输出内容是
Date Thu, 07 Aug 2008 16:58:37 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Last-Modified Thu, 07 Aug 2008 16:58:37 GMT
这里的 Last-Modified 时间和请求文件的时间相同,也就是说该文件总是声明为最新的
在程序中需要输出Last-Modifed 和 Expires信息,比如php
header(‘Last-Modified: ‘ . gmdate(“D, d M Y H:i:s”) . ‘ GMT’);
header(‘Expires: ‘ . gmdate (“D, d M Y H:i:s”, time() + 3600*24). ” GMT”);
以上信息设置php文件的过期时间为请求该文件的时间后的24小时(3600*24)
Squid和Apache中的max-age与Expires的分别
主要重点在于我们要明白一个相对(Expires)一个绝对(max-age).
分别
max-age
max-age是HTTP/1.1中,他是指我们的web中的文件被用户访问(请求)后的存活时间,是个相对的值,相对Request_time(请求时间).
例如:A.html 用户请求时间是18:00,max-age设置的是600的话,相当18:00+600秒过期,也就是相对18:00的时间后面600秒后过期.默认的max-age是由Expires算出来的.
Expires
Expires是HTTP/1.0中的,它比max-age要麻烦点.Expires指定的时间分下面二种,这个主要考虑到apache中设置是A还是M.
1.相对文件的最后访问时间(Atime)
当Apache使用A时间来做Expires时.这样设置时.他就和max-age的值相等,因为max-age是相对文件的请求时间(Atime).
例如:ExpiresByType text/html A600
由上面我们得知,Apache设置Atime时,过期为600秒时.
Expires=18:00+600=18:10
max-age=18:00+600=18:10
得出:Expires=max-age
2.绝对修改时间(MTime)
这又分二种情况,我们来拿A.htm来讲
假设文件的建立时间为18:00.
当用户Request请求为18:00时,过期为600秒
Expires=18:00+600=18:10
max-age=18:00+600=18:10
得出:Expires等于max-age
当用户Request请求为18:20时,过期为600秒
Expires=18:00+600=18:10(因为设置成Mtime时,时间由文件建立时间来决定)
max-age=18:20+600=18:30
得出:Expires不等于max-age
另外要注意,象上面这种清况时,max-age优化,所以过期时间为18:30.
在squid,如果没有指明expires和max-age这二个的截止时间,那它就会使用发式截止时间,如参考 Last-Modified.
其实上面的max-age=18:20+600=18:30,这样算max-age不对,真实环境要这样算,max-age过期为http头中的Age=600过期.
注:Age域值是缓存服务器估计从响应产生或被原始服务器重新证实以来的总时间.age的值是缓存服务器算出来的,原始服务器是没有的.
http://hi.baidu.com/lijunwyf/blog/item/f109aa00ed122f19728da54e.html
发表评论
-
JVM的内存优化
2012-06-21 12:37 1302自:http://hi.baidu.com/walte ... -
JVM最大分配内存
2012-06-21 12:27 1115分析了当前比较流行的几个不同公司不同版本JVM的最大内存,得出 ... -
查看jvm最大内存
2012-06-21 12:22 1485查看jvm最大内存 java -Xmx1500M -vers ... -
Tomcat内存设置 .
2012-06-15 23:03 1035Tomcat 内存配置 2009年08月11日 17:05 ... -
如何指定tomcat中session过期时间
2012-06-06 11:33 823如何指定tomcat中session过期时间 1. 在se ... -
轻松实现Apache,Tomcat集群和负载均衡
2012-06-05 23:24 1049作者:罗代均 ldj_work#126.com,转载请保持完整 ... -
tomcat最多能支持多少用户
2012-06-05 23:20 2746Tomcat里用线城池来控制并发用户的个数。 初始化为150个 ... -
tomcat开启Gzip
2011-04-08 23:52 1262现在来说一下如何在TOM猫中一步到位(要求TOM猫5.0以后版 ... -
tomcat的虚拟站点问题
2011-03-02 14:50 1367<Host name="localhost&q ... -
Tomcat里 appBase和docBase的区别
2011-03-02 14:47 1256<host appBase="d:/aaa&q ... -
Apache+Tomcat负载均衡和集群的尝试
2011-03-02 14:44 11281 各软件版本 Apache 2.2.4 因为jd_mod 用 ... -
Tomcat源码分析之JNDI
2011-03-02 14:43 1500在tomcat服务器中,我们可以通过配置文件%CATALINA ... -
tomcat和apache整合
2011-03-02 14:42 987为什么要整合了.其实很简单.原因就是: tomcat在静态 ... -
将Tomcat解压缩版变成服务形式运行,并修改Tomcat的启动内存参数
2011-03-02 14:41 1323许多朋友为了调试方便,下载使用的Tomcat是.zip的解压缩 ... -
Tomcat5.5.x配置整理 - 在重新启动Tomcat的webapp的时候,禁止把session写入文件
2011-03-02 14:39 982修改conf/web.xml 取消注释: <!--- ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-03-02 14:38 8341、PermGen space的全称是Permanent Ge ... -
Tomcat 同时侦听多端口,多应用
2011-03-02 14:37 1068当你使用Tomcat作为Web Server的时候,是不是会想 ... -
Tomcat5.5.x配置整理 - 配置日志
2011-03-02 14:33 1017在D:\jakarta-tomcat-5.5.8\comm ... -
Tomcat5.5.x配置整理 - 增强SessiionID的生成算法和长度
2011-03-02 14:32 925查看复制到剪切板打印 <Manage ... -
Tomcat5.5.x配置整理 - 发布webapp到网站根目录
2011-03-02 14:31 11001。直接复制到ROOT目录下。 2.因为无法创建无名字的xml ...
相关推荐
在静态文件服务器如Apache、Lighttpd和Nginx中,可以通过配置文件来设置Etag和Expires策略。Apache的配置中,可以使用Header指令添加或删除Etag,例如`Header unset Etag`来禁用Etag。Expires则是通过设置HTTP响应头...
Apache服务器的缓存控制是通过HTTP响应头中的Cache-Control字段来实现的,它允许服务器指定客户端如何缓存资源,以提高网页加载速度和减少服务器负载。 `max-age`是一个Cache-Control字段的参数,它告诉浏览器资源...
【Nginx 介绍】 Nginx 是一款高性能的 HTTP 和...总结起来,利用 Nginx 实现动静分离和负载均衡,可以有效地优化网站性能,提高服务的可用性和可靠性。Nginx 的高性能和易用性使其成为现代 Web 架构中的重要组成部分。
本实例将详细阐述如何通过Nginx配置集群负载均衡,以实现动静分离,提升系统性能和稳定性。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器,以其高性能、稳定性以及低内存占用著称。它能处理静态文件请求,...
通过以上配置,我们可以看到Nginx不仅提供了丰富的配置选项来优化其自身性能,还能够有效地实现负载均衡和动静分离等功能,从而显著提升整个系统的性能和稳定性。这对于构建高性能Web应用来说至关重要。
在IT行业中,构建高可用和负载均衡的服务器架构是至关重要的。本教程将详细讲解如何在Linux系统上安装Nginx、Keepalived,并进行Tomcat的负载均衡配置,以及动静分离的设置,涵盖主备模式和双主模式。通过实践这些...
Redis 是一个高性能的键值数据库,它在许多场景下被广泛使用,特别是在缓存、计数、发布/订阅等...如果你想要了解更多关于Redis以及其过期机制的详细信息,可以查阅提供的压缩包文件“redis 对hash设置expires.pdf”。
1. **配置代理服务器**: 在Apache配置文件中启用mod_proxy模块,并设置负载均衡规则。 2. **定义后端服务器**: 指定需要分发请求的服务器列表及其权重。 3. **监控和调整**: 使用Apache的错误日志和访问日志监控负载...
在Linux环境下,构建一个高效的Web服务架构通常会结合Nginx和Tomcat,利用Nginx的反向代理和负载均衡能力,以及Tomcat对于Java应用的出色支持。本配置指南将详细介绍如何在Linux系统中设置Nginx与Tomcat的负载均衡...
**负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性和可用性。 **1.1 配置示例** 要在Nginx中实现负载均衡,首先需要定义一个 `upstream` 块来指定一组后端...
而 Nginx 的 sticky 模块是它的一个扩展,用于实现会话持久化,即在负载均衡环境中保持用户会话与特定后端服务器之间的关联,从而提高服务的连续性和响应速度。Nginx sticky module 1.1 是该模块的一个版本,下面...
在IT行业中,LoadRunner是一款广泛使用的性能测试工具,由HP(现被Micro Focus收购)开发,主要用于模拟大量用户...文档"lr负载运行时浏览器缓存设置.docx"应该提供了更详细的步骤和示例代码,建议仔细阅读以加深理解。
Etags原理:Add an Expires header已经对浏览器缓存机制中的Cache-Control和Expires进行了配置,这一条评测的是另外两个:Last-Modified和ETag。简单的说,即使设置了文件的期限,浏览器在访问资源时也会因为Last-...
在实际应用中,需要注意不同日期函数可能会有差异,比如在某些环境下使用`second()`可能会导致问题,如2003 Server + IIS 6.0的情况下,`second()`返回的时间超过500秒时可能出现页面无法正常显示的情况。...
.NET框架为Web开发提供了强大的支持,其中包括处理Cookie的能力。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并在用户再次访问...在实际开发中,根据需求合理设置Cookie的生命周期和安全性是至关重要的。
总结,Laravel中的“expires”功能可以帮助我们有效地管理数据库中的临时数据,通过设置和查询过期日期,以及定期清理过期记录,确保系统保持高效和整洁。在实际开发中,可以根据具体业务场景灵活运用这些技巧,提高...