当Traffic Server收到一个web对象的请求,它首先尝试着在缓存中定位该对象。如果该对象在缓存中,Traffic Server将会检查该对象是否仍然有效。对于HTTP对象而言,Traffic Server支持可选的作者自定义的有效期。Traffic Server坚持这些有效期;另外,它在对象被改变的频率和管理员选择的有效期方案之间挑选一个有效期。对象也可以和源服务器一起检查器有效来重新生效。
HTTP对象保鲜
Traffic Server通过如下的方式来判断缓存中的HTTP对象是否有效:
一些HTTP对象包含Expires头或者max-age头来明确定义对象可以被缓存的时间。Traffic Server通过比较当前时间和有效期时间来决定该对象是否仍然有效。
如果HTTP对象没有Expires头或者max-age头,Traffic Server使用下面的公式来计算对象有效期:
freahness_limit = (date – last_modified) * 0.1
这里的date是对象服务器返回的日期,而last_modified是Last-Modified头部的日期。如果没有Last-Modified头部,Traffic Server就使用对象写入缓存的日期。因子0.1(10%)可以根据需要来增加或减小(见Modifying the Aging Factor for Freshness Computations)。
计算的最大有效期被限制在一个最小值和最大值之间,更多信息见(Setting an Absolute Freshness Limit)。
如果HTTP对象既没有Expires头部也没有Last-Modified和Date头部,Traffic Server使用一个最大和最小有效期(见Setting an Absolute Freshness Limit)。
重新生效规则为特殊的对象提供有效期极值。可以为来自特殊的域或者IP地址的对象,URL中包含指定的正则表达式的对象,来自特殊客户端的对象等(见cache.config)设置有效期极值。
为有效期的计算修改老化因子
如果一个对象没有包含任何截止信息,Traffic Server可以根据其Last-Modified和Date头部来估计它的有效期。默认地,Traffic Server存储该对象从其上次修改后10%的时间。可以根据需要来增大或减小这个百分比。
为有效期的计算修改老化因子
1. 在文本编辑器中打开位于Traffic Server的config目录下的records.config文件。
2. 编辑下面的变量:
变量 |
描述 |
proxy.config.http.cache.heuristic_lm_factor |
设置这个变量来指定计算有效期的老化因子。Traffic Server存储该对象从其上次修改后这个百分比的时间。默认值为0.1(10%)。 |
3. 保存并关闭records.config文件
4. 定位到Traffic Server的bin目录
5. 运行traffic_line –x命令来应用配置文件的变更。
设置一个绝对有效期极值
一些对象既没有Expires头部也没有Last-Modified和Date头部。为了控制这些对象在缓存中的时间,需要指定一个绝对有效期极值。
设置一个绝对有效期极值:
1. 在文本编辑器中打开位于Traffic Server的config目录下的records.config文件。
2. 编辑下面的变量:
变量 |
描述 |
proxy.config.http.cache.heuristic_min_lifetime |
设置这个变量来指定没有截止时间的HTTP对象在缓存中有效期的最小值。默认值为3600秒(1小时)。 |
proxy.config.http.cache.heuristic_max_lifetime |
设置这个变量来指定没有截止时间的HTTP对象在缓存中有效期的最大值。默认值为86400秒(1天)。 |
3. 保存并关闭records.config文件
4. 定位到Traffic Server的bin目录
5. 运行traffic_line –x命令来应用配置文件的变更。
指定头部的必要条件
为了更好的确保缓存中对象的有效性,可以配置Traffic Server只缓存有特殊头部的对象。默认地,Traffic Server缓存所有的对象(包括没有头部的对象);可以为专门的代理情况改变默认设置。如果配置Traffic Server只缓存有Expires或者max-age头部的HTTP对象,缓存命中率将会明显下降(因为几乎没有对象有明确的截止信息)。
配置Traffic Server只缓存特殊头部的对象:
1. 在文本编辑器中打开位于Traffic Server的config目录下的records.config文件。
2. 编辑下面的变量:
变量 |
描述 |
proxy.config.http.cache.required_headers |
设置这个变量为下列值之一:
0 = 对头部没有特殊要求
1 = 需要是Last-Modified头部,或者有明确生命期的头部,Expires或者Cache-Control: max-age
2 = 需要明确的生命期,Expires或者Cache-Control: max-age
|
3. 保存并关闭records.config文件
4. 定位到Traffic Server的bin目录
5. 运行traffic_line –x命令来应用配置文件的变更。
Cache-Control头部
尽管一个对象在缓存中可能是有效的,但是客户端或者服务器经常强加它们自己的不从缓存中获取对象的约束。比如,一个客户端请求一个对象时可能不通过缓存,即使通过缓存,对象的缓存时间也不能超过10分钟。Traffic Server可以给一个缓存的对象在客户端请求和服务器响应中加上Cache-Control头部。下面的Cache-Control头影响着对象是否可以通过缓存来服务:
- 客户端发送的no-cache头部,告诉Traffic Server不能直接从缓存服务任何对象;因此,Traffic Server总是从源服务器获取对象。可以配置Traffic Server忽略客户端的no-cache头部,更多信息见Configuring Traffic Server to Ignore Client no-cache Headers。
- 服务器发送的max-age头部,用来表示对象的使用期限。如果使用期限小于max-age,表明对象是有效的,可以直接从缓存服务。
- 客户端发送的min-fresh头部,是一个可接受的有效期容忍。这意味着客户端想让对象至少这次是有效的。如果一个对象在未来的这样一段时间内不再有效,那它会重新生效。
- 客户端发送的max-stale头部,允许Traffic Server服务过期的对象,倘若这些对象不是太老的话。一些浏览器倾向于使用过期不久的对象来改善性能,尤其在Internet不是很发达的时期。
Traffic Server在HTTP有效期标准之后使用Cache-Control标准。比如,一个对象可能被认为是有效的,但是如果它的使用期限大于它的max-age,它将不会被服务。
重新生效HTTP对象
对客户端请求一个在缓存中过期的对象,Traffic Server将重新生效这个对象。重新生效是询问源服务器检查这个对象有没有被修改。重新生效的结果是下面之一:
- 如果对象还是有效的,Traffic Server将重新设置这个对象的有效期极值,同时用这个对象来服务。
- 如果有这个对象的新的拷贝,Traffic Server缓存这个新对象(替换过期对象),同时用新的对象来服务用户。
- 如果对象在源服务器已经不存在了,Traffic Server将不为这个对象提供服务。
- 如果源服务器没有响应重新生效查询,Traffic Server在用这个对象服务的同时,会提供111重新生效失败的警告。
默认情况下,Traffic Server重新生效一个缓存中对象,如果它认为该对象已经过期。Traffic Server评估对象的有效性已在HTTP Object Freshness中描述。可以选择如下选项之一来重新配置Traffic Server评估有效性的方式:
- Traffic Server认为所有在缓存中的对象都是过期的:总是对在缓存中的对象通过源服务器进行重新生效。
- Traffic Server认为所有在缓存中的对象都是有效的:从不对在缓存中的对象通过源服务器进行重新生效。
- Traffic Server认为所有没有Expires或Cache-Control头部的HTTP对象都是过期的:重新生效所有没有Expires或Cache-Control头部的HTTP对象。
可以通过在cache.config文件(见cache.config)中设置特殊的重新生效规则来配置Traffic Server重新生效缓存中对象的方式。
配置重新生效选项:
1. 在文本编辑器中打开位于Traffic Server的config目录下的records.config文件。
2. 编辑下面的变量:
变量 |
描述 |
proxy.config.http.cache.when_to_revalidate |
设置这个变量为下列值之一:
0 = 配置Traffic Server重新生效HTTP对象,当它认为该对象在缓存中已过期(如果可以的话,Traffic Servre检查对象头部和有效期极值)。这是默认配置。
1 = 配置Traffic Server重新生效没有Expires或Cache-Control头部的HTTP对象。
2 = 配置Traffic Server总是重新生效HTTP对象;Traffic Server总是认为HTTP对象是过期的。
3 = 配置Traffic Server从不重新生效HTTP对象;Traffic Server总是认为HTTP对象是有效的。
|
3. 保存并关闭records.config文件
4. 定位到Traffic Server的bin目录
5. 运行traffic_line –x命令来应用配置文件的变更。
分享到:
相关推荐
Traffic Server 是一款高...总之,Traffic Server 通过高效的缓存管理和智能的请求处理,为HTTP访问提供了显著的速度提升和带宽节省。无论是对于优化企业内部网络还是改善互联网服务,都是一个强大而灵活的解决方案。
Traffic Server是Apache软件基金会的一个项目,它主要被用作内容分发网络(CDN)代理服务器。CDN代理服务器的功能是将用户请求的资源(如图片、视频、网页等)分发到最接近用户的缓存服务器上,从而缩短响应时间,...
安装完成后,`trafficserver_exporter`会包含一个可执行文件,通过配置参数启动,连接到Trafficserver,并暴露一个HTTP端点,Prometheus可以通过这个端点抓取监控数据。配置文件可能需要设置包括Trafficserver的地址...
【标题】:Traffic Server CacheURL详解 在互联网服务中,缓存系统扮演着至关重要的角色,它可以显著提高网站性能和响应速度。Traffic Server(简称TS)是Apache软件基金会的一个高性能、可扩展的代理缓存服务器,...
- **TrafficServer缓存**:基于高速对象数据库(Objectstore)构建,能高效存储大量不同类型的对象,支持对象替换版本管理和自动过期数据清理机制。设计时充分考虑了容错性,即使部分磁盘失效,仍能正常运行。 - **RAM...
使用Apache Traffic Server搭建CDN服务器
Traffic Server是一个高性能、高扩展性的开源HTTP/1.1代理服务器和缓存服务器,它不仅可用于改善网站性能和可靠性,还能对内容进行管理,例如通过缓存和重写URLs来提升网站的访问速度和用户体验。 描述部分提到该...
适用于Apache TrafficServer(ATS)的Docker构建 该存储库为提供Dockerfile 地位 Debian:克星 流量服务器:9.0.0 构建的图像将上传到 用法: 安装Docker: : 执行docker run -d --name TrafficServer -p 8080:...
3. **日志对象**:通过`logs_xml.config`文件进行描述,此文件通常位于`/etc/trafficserver/`目录下,文件内部详细描述了配置方法。 4. **日志输出**:由LogObject的`target`属性决定。具体来说,`target`属性由...
在做Proxy过程中,经常遇到需要下载trafficserver代理软件,很多时候一些链接无法下载,奉上次软件,希望对家有所帮助。
trafficserver6的资源包及自动化安装脚本 此脚本是自己写的,自己也在用的,另外博客中也有文章介绍的 https://blog.csdn.net/sincool1003/article/details/82221663
Apache Traffic Server(ATS)是一款高性能、可扩展的开源代理服务器,广泛用于内容分发网络(CDN)和大型网站的缓存解决方案。源代码分析可以帮助我们深入理解其工作原理,优化性能,以及根据需求进行定制化开发。...
TRAFFICSERVER_DEBUG:提供对位于 http://{trafficserverip}/trafficservercache/ 的缓存检查器的访问手动配置您可以选择挂载位于/usr/local/etc/trafficserver/任何文件以自己配置流量服务器。 有关更多信息,
《cpp-支持trafficserver62x:为老版本TS打造专属监控工具》 在IT行业中,软件维护和升级是一项至关重要的任务,但对于某些特定场景,尤其是企业内部使用的老版本系统,可能由于兼容性、稳定性等原因无法轻易升级。...
Apache Traffic ServerApache Traffic Server:trade_mark:加速了互联网的访问, 提升了网站的性能, 提供了前所未有的web主机托管能力。什么是Apache Traffic Server?TrafficServer是一款高性能的web反向代理缓存...
proxyServer squid / varnish / apache traffic server / ATS 这篇博文讨论了代理服务器的基本概念,并重点介绍了Squid、Varnish和Apache Traffic Server(ATS)这三种流行的代理缓存服务器软件。下面将详细阐述这些...
Apache traffic server 离线一键安装脚本
由Google PageSpeed支持的Apache Traffic Server Web内容优化插件 要构建,一个简单的“ make”应该可以工作。 使用“ sudo make install”进行安装。 (可选)使用ethread.patch修补ATS有助于消除在同步ATS和PSOL...
ts-flv - FLV 流媒体,作为 Apache TrafficServer 的插件实现。 地位 该模块正在积极开发中。 描述 该模块为 FLV 文件提供流媒体服务器支持。 用户可以使用以秒为单位的start参数向服务器发送 HTTP 请求,服务器将...