云服务器免费试用

apache缓存(apache 静态资源缓存)

服务器知识 0 389

本文目录:

  • 1、如何在 apache 中设置缓存有效时间
  • 2、phpstudy怎么清除apache缓存
  • 3、php 怎么清理 apache缓存
  • 4、apache web服务器怎么配置图片缓存?
  • 5、北大青鸟java培训:PHP应用中常用的9大缓存技术?
  • 6、如何设置Apache服务器的缓冲区大小

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

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

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

很显然,我们并没有看到 Expires 或者 max-age 字样。

比如我要把 max-age 设置成 1000,how?

打开 httpd.conf 文件(比如我的是在 F:\wamp\bin\apache\Apache2.2.17\conf 下),找到这一行:

去掉注释(井号),然后再加上这么两行,再重启下apache,就 ok 了:

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

其他设置类似:

我们也可以直接修改 max-age 字段。

同样在 httpd.conf 文件中,找到这么一行:

去掉注释(井号),再加上这么一句,重启下 apache,就 ok 了:

我们发现得到的响应头里并没有 Expires 字段。

phpstudy怎么清除apache缓存

#ErrorLog "logs/error.log"

#CustomLog "logs/access.log" common

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

php 怎么清理 apache缓存

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

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

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

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

apache web服务器怎么配置图片缓存?

LoadModule cache_module modules/mod_cache.so

LoadModule mem_cache_module modules/mod_mem_cache.so

IfModule mod_cache.c

IfModule mod_mem_cache.c

CacheEnable mem /

# cache 40MB

MCacheSize 80960

MCacheMaxObjectCount 21000

MCacheMaxStreamingBuffer 65536

MCacheMinObjectSize 1

MCacheMaxObjectSize 74000

###GDSF 基于缓存命中率和文档大小计算优先级。在必要时,优先级最低的文档被移出缓存

##MCacheRemovalAlgorithm GDSF

#LRU 指定最长时间没有用到的对象将在必要的时候移出缓存

MCacheRemovalAlgorithm LRU

/IfModule

##传输压缩

LoadModule deflate_module modules/mod_deflate.so

IfModule mod_deflate.c

DeflateMemLevel 7

DeflateWindowSize 15

DeflateBufferSize 8096

DeflateCompressionLevel 7

AddOutputFilterByType DEFLATE DEFLATE text/html text/plain application/x-httpd-php application/x-javascript text/css

AddOutputFilter DEFLATE css js php xml js html

AddOutputFilter DEFLATE css #压缩css文件

AddOutputFilter DEFLATE js #压缩js文件

/IfModule

北大青鸟java培训:PHP应用中常用的9大缓存技术?

一、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。

此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content=Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();二、数据缓存顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;Ecmall商城系统里面就用了这种方式;三、查询缓存其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示;按时间变更进行缓存就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次。

四、页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存。

该种方式可以用于如商城中的商品页;五、Opcode缓存首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。

比较知名的是XCache、TurckMMCache、PHPAccelerator等。

六、按内容变更进行缓存这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件;比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存;当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际问的是一个静态页面,而不需要再去访问数据库;试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了;七、内存式缓存提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是key_value方式;connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache-set('key','缓存的内容');$get=$memcache-get($key);//获取信息?八、apache缓存模块apache安装完以后,是不允许被cache的。

河南IT培训认为如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。

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

你说的是缓存大小吧

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

1、基于硬盘文件的缓存

基于硬盘文件存储的缓存由 mod_disk_cache 模块实现,先看个简单的配置例子:

IfModule mod_cache.c

CacheDefaultExpire 86400

IfModule mod_disk_cache.c

CacheEnable disk /

CacheRoot /tmp/apacheCache

CacheDirLevels 5

CacheDirLength 4

CacheMaxFileSize 1048576

CacheMinFileSize 10

/IfModule

/IfModule

把上面的配置加到 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 模块实现,还是看个简单的配置吧,这样比较直观:-)

IfModule mod_cache.c

IfModule mod_mem_cache.c

CacheEnable mem /

MCacheMaxObjectCount 20000

MCacheMaxObjectSize 1048576

MCacheMaxStreamingBuffer 65536

MCacheMinObjectSize 10

MCacheRemovalAlgorithm GDSF

MCacheSize 131072

/IfModule

/IfModule

简单说一下上面一些指令的意思:

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,除非设置了指令 CacheIgnoreNoLastMod On

如果返回内容的头部信息“Cache-Control:”中包含“private”,除非设置了指令 CacheStorePrivate On,否则不会被缓存

如果返回内容的头部信息“Cache-Control:”中包含“no-sotre”,除非设置了指令 CacheStoreNoStore On,否则不会被缓存

如果返回内容的头部信息“Vary:”中包含了“*”,不会被缓存

【apache缓存】的内容来源于互联网,如引用不当,请联系我们修改。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: apache缓存(apache 静态资源缓存)
本文地址: https://solustack.com/27879.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。