当前位置:首页 » 硬盘大全 » apache缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

apache缓存

发布时间: 2022-02-14 01:22:08

1. 如何在 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"

2. phpstudy怎么清除apache缓存

#ErrorLog "logs/error.log"
#CustomLog "logs/access.log" common

修改在apache目录下的httpd.conf文件,注释上面的两行就行了。

3. php 怎么清理 apache缓存

一种是对 页面结果的缓存 应用服务器级别的 软件如 squid

一种是 内存级别的 一般是对 php 频繁调用的并且如果每次查询会消耗大量资源的数据 软件有 memcached

一种是 对php 程序进行优化编码的缓存 如 apache 里面的 apc, eAccelerator, XCache 等

还有一种就是文件缓存 这种一般是 用php自己实现的 没什么可说的.

4. 如何在 apache 中设置缓存有效时间

在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expires 设定了一个缓存的过期时间,而 max-age 则设定了一个缓存有效时间(单位秒),通常情况下,两者可以相互推得。(详细参考 浏览器缓存机制浅析)

还是用 WampServer 举例。我们在 www 文件夹下新建个 index.html 页面,在浏览器中打开它,得到的 http 响应头如下:

5. apache的httpd.conf文件中如果不设置cache的相关内容,那么它的默认缓存时间是多少

1个小时。

6. 谁熟悉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字段。

7. 关于apache的缓存

B服务器,但其丰富的功能对于一个新手来说往往不知道从何下手。我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过程可以从简单的静态html服务开始,一个模块一个模块的学习使用。从单纯的HTML静态服务(core),到复杂的动态页面服务(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。

本文主要从简化安装==>性能调优==>维护方便的角度,介绍了WEB服务的规划、HTTPD安装/应用模块配置、升级/维护等过程。让Apache和PHP,Resin等应用模块的独立升级,完全互不影响。

WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;
Apache安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;
修改 HARD_SERVER_LIMIT:
vi /path/to/apache_src/src/include/httpd.h
#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”
apache编译:
./configure --prefix=/home/apache --enable-shared=max --enable-mole=most
可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;
mod_php安装:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql
mod_resin安装:./configure --with-apxs=/home/apache/bin/apxs
mod_gzip安装:修改Makefile中的 apxs路径:然后make make install
工具:日志轮循工具cronolog安装:
升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。
系统安装:系统管理员的职责就是安装好一台DSO模式的Apache,然后COLON即可,
应用安装:由应用管理员负责具体应用所需要的模块,比如PHP Resin等,并设置httpd.conf中相关的配置。
系统升级:系统管理员:升级操作系统/升级Apache
应用升级:应用管理员:升级应用模块,PHP Resin等。
WEB应用的容量规划

Apache主要是一个内存消耗型的服务应用,我个人总结的经验公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5

为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过 apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统效率急剧下降。此外,同样的服务:2G内存的机器的 apache_max_process一般只设置到1G内存的1.7倍,因为Apache本身会因为进程过多导致性能下降。

8. apache缓存怎么清理

这个没有一个固定的方法啊。毕竟不同的PHP程序有不同的缓存机制。
比如discuz吧,直接在后台——系统工具——更新缓存就可以了。

smarty是个模板生成机制,用于分离php和html,如果你的站点本来就没有smarty,就不会有smarty生成的缓存,也不可能清除你要清除的缓存。

9. 如何设置Apache服务器的缓冲区大小

你说的是缓存大小吧

Apache的缓存方式有两种,一种是基于硬盘文件的缓存,由mod_disk_cache实现,另一种是使用内存缓存,由mod_mem_cache实现,不过它们都是依赖mod_cache模块的,mod_cache模块提供了一些缓存配置的指令供它们使用,而mod_file_cache模块是搭配mod_mem_cache模块使用的,下面分别进行介绍。


1、基于硬盘文件的缓存
基于硬盘文件存储的缓存由mod_disk_cache模块实现,先看个简单的配置例子:
<IfMolemod_cache.c>
CacheDefaultExpire86400
<IfMolemod_disk_cache.c>
CacheEnabledisk/
CacheRoot/tmp/apacheCache
CacheDirLevels5
CacheDirLength4
CacheMaxFileSize1048576
CacheMinFileSize10
</IfMole>
</IfMole>


把上面的配置加到Apache的httpd.conf文件中,如果缓存相关的模块都已经编译进了Apache的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:
CacheDefaultExpire:设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheEnable:启用缓存,第1个参数是缓存类弄,这里当然是disk了,第2个参数是缓存路径,指的是url路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存/docs下的所有文件
CacheRoot:缓存文件所在的目录,运行Apache的用户(如daemon或nobody)要能对其进行读写,如果不清楚的话可以直接设置成777,请手动建立该目录并设置好访问权限
CacheDirLevels:缓存目录的深度,默认是3,这里设置为5
CacheDirLength:缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize和CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为1M和10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启Apache应该就能使用了。一切正常的话,可以在缓存目录下看到Apache自动建立的一些目录和缓存的数据文件。
2、基于内存的缓存
基于内存的缓存主要由mod_mem_cache模块实现,还是看个简单的配置吧,这样比较直观:-)
<IfMolemod_cache.c>
<IfMolemod_mem_cache.c>
CacheEnablemem/
MCacheMaxObjectCount20000
MCacheMaxObjectSize1048576
MCacheMaxStreamingBuffer65536
MCacheMinObjectSize10
MCacheRemovalAlgorithmGDSF
MCacheSize131072
</IfMole>
</IfMole>
简单说一下上面一些指令的意思:
CacheEnable:启用缓存,使用基于内存的方式存储
MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMaxObjectSize:单个缓存对象最大为1M,默认是10000bytes
MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为65536,该值通常小于100000或MCacheMaxObjectSize设置的值
MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes
MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是GDSF,还有一个是LRU,可以查一下Apache的官方文档,上面有些介绍
MCacheSize:缓存数据最多能使用的内存,单位是kb,默认是100kb,这里设置为128M
保存重启Apache基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。
3、注意事项
使用缓存需要注意如下事项:
要使用缓存,必须使用指令CacheEnable启用它,目前可用的缓存类型为disk或mem,禁止缓存可以使用CacheDisable,如CacheDisable/private
待缓存的URL返回的状态值必须为:200、203、300、301或410
URL的请求方式必须是GET方式
发送请求时,头部中包含“Authorization:”的字符串时,返回的内容将不会被缓存
URL包含查询字符串,如问号?后的那些东西,除非返回的内容包含“Expires:”,否则不会被缓存
如果返回的状态值是200,则返回的头部信息必须包含以下的一种才会被缓存:Etag、Last-Modified、Expires,除非设置了指令CacheIgnoreNoLastModOn
如果返回内容的头部信息“Cache-Control:”中包含“private”,除非设置了指令CacheStorePrivateOn,否则不会被缓存
如果返回内容的头部信息“Cache-Control:”中包含“no-sotre”,除非设置了指令CacheStoreNoStoreOn,否则不会被缓存
如果返回内容的头部信息“Vary:”中包含了“*”,不会被缓存