当前位置:首页 » 文件管理 » apache文件缓存

apache文件缓存

发布时间: 2024-11-28 16:53:54

❶ 如何在 Apache 中设置缓存有效时间

你好,
在 apache 中设置缓存有效时间方法:启动和配置 Expires
打开 httpd.conf 文件(比如我的是在 F:\wamp\bin\apache\Apache2.2.17\conf 下),找到这一行:
复制代码#LoadMole expires_mole moles/mod_expires.so

去掉注释(井号),然后再加上这么两行,再重启下apache,就 ok 了:
复制代码
ExpiresActive On
ExpiresByType text/html A1000

我们看到 max-age 字段也出现在了响应头中,其实它是根据 Expires 的设置自动填充的。

其他设置类似:复制代码#启用expires_mole模块
LoadMole expires_mole moles/mod_expires.so
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
#以下的含义类似
ExpiresByType text/css "now plus 2 months"
ExpiresByType text/js "now plus 2 days"
ExpiresByType image/jpeg "access plus 2 months"
ExpiresByType image/bmp "access plus 2 months"
ExpiresByType image/x-icon "access plus 2 months"
ExpiresByType image/png "access plus 2 months"

❷ 高并发,写入频繁的评论系统有必要加缓存么

如果并发真到几万的话,缓存肯定是要加的。
具体加缓存的策略,看想要什么效果,可以对查询最频繁的一类请求先加缓存。
保证mongo处于一个合理的负载。

❸ 谁熟悉APACHE的缓存配置

Apache中关于页面缓存的设置

Expires、Cache-Control、Last-Modified、
ETag是RFC
2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是,
HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。我们
这里以Apache2.0服务器为例,只讨论HTTP/1.1协议。

Expires

Expires字段声明了一个网页或URL地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。RFC告诉我们:“由于推断的失效时间也许会降低语义透明度,应该被谨慎使用,同时我们鼓励原始服务器尽可能提供确切的失效时间。”

对于一般的纯静态页面,如html、gif、jpg、css、js,默认安装的Apache服务器,不会在响应头添加这个字段。Firefox浏览

器接受到相应后,如果发现没有Expires字段,浏览器根据文件的类型和“Last-Modified”字段来推断出一个合适的失效时间,并存储在客户
端。推测出的时间一般是接受到响应时间后的三天左右。

Apache的expires_mole模块可以在Http响应头部自动加上Expires字段。在Apache的httpd.conf文件中进行如下配置:

#启用expires_mole模块
LoadMole expires_mole moles/mod_expires.so
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
#以下的含义类似
ExpiresByType text/css “now plus 2 month”
ExpiresByType text/js “now plus 2 day”
ExpiresByType image/jpeg “access plus 2 month”
ExpiresByType image/bmp “access plus 2 month”
ExpiresByType image/x-icon “access plus 2 month”
ExpiresByType image/png “access plus 2 month”

对于动态页面,如果在页面内部没有通过函数强制加上Expires,例如header(”Expires: ” . gmdate(”D, d M
Y H:i:s”) . ” GMT”),Apache服务器会把Wed, 11 Jan 1984 05:00:00 GMT
作为Expires字段内容,返回给浏览器。即认为动态页面总是失效的。而浏览器仍然会保存已经失效的动态页面。

可以发现Firefox浏览器总是缓存所有页面,不管失效、不失效还是没有声明失效时间。即使缓存中声明了一个网页的实效日期是1970-01-
01 08:00:00,浏览器仍然会发送该文件在缓存中的Last-Modified和ETag字段。
如果在服务器端验证通过,返回304状态,浏览器就还会使用此缓存。

Cache-Control

Cache-Control字段中可以声明多些元素,例如no-cache, must-revalidate,
max-age=0等。这些元素用来指明页面被缓存最大时限,如何被缓存的,如何被转换到另一个不同的媒介,以及如何被存放在持久媒介中的。但是任何一个
Cache-Control指令都不能保证隐私性或者数据的安全性。“private”和“no-store”指令可以为隐私性和安全性方面提供一些帮
助,但是他们并不能用于替代身份验证和加密

Apache的mod_cern_meta模块允许文件级Http响应头部的控制,同时它也可以配置Cache-Control头(或任何其他头)。响应头文件是放在原始目录的子目录中,根据原始文件名所命名的一个文件。具体用法请参阅Apache的官方网站。

其中Cache-Control :
max-age表示失效日期。如果没有启动mod_cern_meta模块,Apache服务器会把Expires字段中的日期换算成以秒为单位的一个
delta值,赋值给max-age。如果启动mod_cern_meta模块,并且配置了max-age值,Apache会将这个覆盖Expires字
段。同时,max-age隐含了Canche-Control: public。这样浏览器接受到的Cache-Control :
max-age和Expires值就是一致的。

如果失效日期Cache-Control : max-ag=0或者是负值,浏览器会在对应的缓存中把Expires设置为1970-01-01 08:00:00。

Last-Modified

Last-Modified和ETag是条件请求(Conditional
Request)相关的两个字段。如果一个缓存收到了针对一个页面的请求,它发送一个验证请求询问服务器页面是否已经更改,在HTTP头里面带上”
ETag”和”If Modify Since”头。服务器根据这些信息判断是否有更新信息,如果没有,就返回HTTP 304(Not
Modify);如果有更新,返回HTTP 200和更新的页面内容,并且携带新的”ETag”和”Last-Modified”。

使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。

一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。

对于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header(”Last-Modified: ” .
gmdate(”D, d M Y H:i:s”) . ”
GMT”),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。

无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。

ETag

既然有了Last-Modified,为什么还要用ETag字段呢?因为如果在一秒钟之内对一个文件进行两次更改,Last-Modified就会不正确。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。

Apache服务器默认情况下,会对所有的静态、动态文件的响应头添加ETag字段。

在Apache的httpd.conf文件中可以通过FileETag指令配置该选项。FileETag指令配置了当文档是基于一个文件时用以创建
Etag(entity tag)响应头的文件的属性。在Apache
1.3.22及以前,ETag的值是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。
如果一个目录的配置包含了‘FileETag INode MTime Size’而其一个子目录包含了‘FileETag
-INode’那么这个子目录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于‘FileETag MTime Size’。

在多台负载平衡的服务器环境下,同一个文件会有不同的etag或者文件修改日期,浏览器每次都会重新下载。设置‘FileETag None’可以使响应头不再包含ETag字段。

❹ apache服务器下的静态页面如何缓存

Apache有缓存模块的。 例如:

LoadMole mem_cache_mole moles/mod_mem_cache.so
<IfMole mod_cache.c>
<IfMole mod_mem_cache.c>
CacheEnable mem /
# cache 40MB
MCacheSize 80960
MCacheMaxObjectCount 21000
MCacheMaxStreamingBuffer 65536
MCacheMinObjectSize 1
MCacheMaxObjectSize 74000
###GDSF 基于缓存命中率和文档大小计算优先级。在必要时,优先级最低的文档被移出缓存
##MCacheRemovalAlgorithm GDSF
#LRU 指定最长时间没有用到的对象将在必要的时候移出缓存
MCacheRemovalAlgorithm LRU
</IfMole>

❺ Apache Traffic Server组件、机制

Traffic Server(TS)主要由以下几个组件构成:



  • 缓存系统: TS拥有高速的对象数据库,通过URL和头部信息进行索引。它支持不同版本对象的缓存(例如,不同编码或语言),当空间满时,会优先移除过期数据。磁盘故障时,TS会切换到proxy-only模式。此外,TS支持磁盘分区,为特定协议和源服务器分配特定空间。

  • 内存缓存: 存储热门对象,提高高峰期处理速度和减轻磁盘负载。

  • 主机数据库: 包含DNS信息,便于快速转换主机名到IP,存储HTTP版本和主机可靠性数据。

  • DNS解析器: 内置DNS解析功能,避免使用传统解析库,减少DNS流量。

  • 核心进程: traffic_server处理请求,traffic_manager负责控制和配置,traffic_cop监控进程健康。traffic_server重启时,会保留请求队列,待完全重启后再处理。

  • 管理工具: Traffic Line和Traffic Shell提供监控和配置功能,改动会自动写入配置文件。


Traffic Server利用异步事件处理和多线程技术处理高并发,适应多CPU环境。其工作流程包括:用户请求对象,TS在缓存中查找,如命中则判断新鲜度,如未命中则从源服务器获取并更新缓存。


判断对象新鲜度的依据包括Expires、max-age、Last-Modified和Date头部,还有cache.config中的revalidate规则。当对象过期或源服务器响应问题时,TS有不同的处理策略。

热点内容
脚本六要素 发布:2024-11-28 19:41:07 浏览:985
linuxoralce 发布:2024-11-28 19:39:51 浏览:607
4k存储量 发布:2024-11-28 19:39:36 浏览:824
php动态链接 发布:2024-11-28 19:34:16 浏览:150
手机上的安卓系统在哪里看 发布:2024-11-28 19:29:06 浏览:788
空调外机压缩机声音大 发布:2024-11-28 19:27:28 浏览:312
中国密码箱哪里的好 发布:2024-11-28 19:23:01 浏览:309
低配服务器如何搭建网站 发布:2024-11-28 19:08:46 浏览:923
zenly为什么不能下载安卓机 发布:2024-11-28 18:59:05 浏览:295
怎么把辅助放入服务器 发布:2024-11-28 18:53:06 浏览:598