php 在apache 缓存_php中apache是缓存 - CSDN
精华内容
参与话题
  • php在apache运行的几种方式

    千次阅读 2018-05-17 11:57:16
    cgi,fastcgi,php-fmp之间的关系 请看 https://blog.csdn.net/qq_21956483/article/details/80348316Cgi模式和模块dll加载方式比较:Cgi模式下apache调用外部执行器php.exe执行php代码,并将解释后生成的html代码和...

    本文讲运行的三种模式 CGI模式、FastCGI模式、Apache 模块DLL


    解释 cgi,fastcgi,php-fmp之间的关系 请看 https://blog.csdn.net/qq_21956483/article/details/80348316



    Cgi模式和模块dll加载方式比较:

    Cgi模式下

    apache调用外部执行器php.exe执行php代码,并将解释后生成的html代码和原html整合,再传递给apache服务器。

    其在执行时每次都需要重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构,运行速度非常慢,但因为是外部加载执行器,

    php代码执行出错不会导致apache崩溃。


    在模块化(DLL)

    PHP是与Web服务器一起启动并运行的。所以从某种角度上来说,以apache模块方式安装的 PHP4有着比CGI模式更好的安全性以及更好的执行效率和速度。

    Cgifastcgi模式比较:

    Fastcigcgi的升级版,Cgifastcgi工作模式大抵相同,但fastcgi模式中fastcgi的进程管理器可用来管理cgi解释器,

    该管理器在cgi解释器完成请求后,会处于挂起状态,用以等待接下来的请求,

    因为向比较cgi每次都需要重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构,fastcig模式明显要快很多。


    三种模式在apache中使用的方式如下:

    一、CGI模式

    PHP  Apache 2中的 CGI模式。编辑Apache 配置文件httpd.conf 如下:

    # PHP4 版写法

    ScriptAlias /php/ "D:/php/"

    AddType application/x-httpd-php .php

    Action application/x-httpd-php "/php/php.exe"

    # PHP5 版写法

    ScriptAlias /php/ "D:/php/"

    AddType application/x-httpd-php .php

    Action application/x-httpd-php "/php/php-cgi.exe"

    二、Apache模块模式

    PHP  Apache 2中的 模块模式。编辑Apache 配置文件httpd.conf 如下:

    # PHP4 版写法

    LoadModule php4_module "D:/php/php4apache2.dll"

    AddType application/x-httpd-php .php

    别忘了从 sapi 目录中把php4apache2.dll 拷贝出来!

    # PHP5 版写法

    LoadModule php5_module "D:/php/php5apache2.dll"

    AddType application/x-httpd-php .php

    PHPIniDir "D:/php"

    # PHPIniDir 是用来指明php配置文件php.ini 的路径

    三、FastCGI模式

    Apache下的FastCGI模块目前网上有两个版本 mod_fastcgi  mod_fcgid 推荐用 mod_fcgid

    使用 mod_fcgid 配置fastCGI模式

    下载的 mod_fcgid,将压缩包中的“mod_fcgid.so”文件复制到apache“modules”目录。打开Apachehttpd.conf 文件,在最后加入如下配置:

    LoadModule fcgid_module modules/mod_fcgid.so
    
    <IfModule mod_fcgid.c>
    
    AddHandler fcgid-script .fcgi .php
    
    #php.ini的存放目录
    
    FcgidInitialEnv PHPRC"D:/PHP"
    
    # 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
    
    FcgidInitialEnvPHP_FCGI_MAX_REQUESTS 1000
    
    #php-cgi每个进程的最大请求数
    
    FcgidMaxRequestsPerProcess1000
    
    #php-cgi最大的进程数
    
    FcgidMaxProcesses 5
    
    #最大执行时间
    
    FcgidIOTimeout 120
    
    FcgidIdleTimeout 120
    
    #php-cgi的路径
    
    FcgidWrapper "D:/PHP/php-cgi.exe" .php
    
    AddType application/x-httpd-php .php
    
    </IfModule>


    
    

    mod_proxy 代理模块

    mod_proxy 代理模块
     详细见 http://tcspecial.iteye.com/blog/2070075

     mod_fastcgi 模块在windows上表现差强人意,极不稳定, 何况很久没维护更新了, 不适合用在生产环境. 在 apache 2.4 版本提供了 mod_proxy 代理模块, 可以将远端服务器映射到本地 URL 空间中,完全可以替换 mod_fastcgi

       

        下载 apache2.4 或以上版本, 安装后会发现 modules 目录有很多代理模块 mod_proxy_ftp , mod_proxy_fcgi , mod_proxy_http 等, 实现了多种协议


    1. #启用 fastcgi,http 协议:   
    2. LoadModule proxy_module modules/mod_proxy.so  
    3. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so  
    4. LoadModule proxy_http_module modules/mod_proxy_http.so  
    5.   
    6. #添加代理服务:      
    7. ProxyPass /baidu http://www.baidu.com    
    8. ProxyPass /fcgi/ fcgi://192.168.1.82:9000

    展开全文
  • Apache设置web缓存

    千次阅读 2013-02-17 17:21:15
    如果外接了cache或squid服务器要求进行web加速的话,就需要htttpd.conf里进行设置,当然前提是安装apache的时候要激活mod_cache的模块。 以下简单介绍一下安装与配置的步骤: 1. apache版本:httpd-2.0.49....

    默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。
    以下简单介绍一下安装与配置的步骤:
    1. apache版本:httpd-2.0.49.tar.gz
    2. 安装httpd-2.0.49.tar.gz:
    # tar –zxvf httpd-2.0.49.tar.gz
    # cd httpd-2.0.49
    #./configure --enable-cache --enable-disk-cache --enable-mem-cache
    #mke
    #make install
    3. 检验是否安装了cache模块
    /usr/local/apache2/bin/apachectl –l
    如果有mod_cache.c
      mod_disk_cache.c
      mod_mem_cache.c
    这3个模块,说明该apache可以支持cache了
    4.更改httpd.conf的设置
    vi /usr/local/apache2/conf/httpd.conf

    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 4
        CacheDirLength 5
        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:”中包含了“*”,不会被缓存

    4、其它一些指令的介绍
    如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在 Apache 启动的时候就把它们的内容缓存到内存中(当然要启用内存缓存系统),使用的是 mod_file_cache 模块,具体如下:
    有多个文件可以用空格格开
    MMapFile /var/www/html/index.html /var/www/html/articles/index.html
    上面是缓存文件的内容到内存中,除此之外,还可以只缓存文件的打开句柄到内存中,当有请求进来的时候,Apache 直接从内存中获取文件的句柄,返回内容,和 MMapFile 指令很像,具体如下:
    CacheFile /var/www/html/index.html /var/www/html/articles/index.html
    上面两个指令所缓存的文件如果有修改的话,必须重启 Apache 或使用 graceful 之类的方式强制使 Apache 更新缓存数据,否则当用户访问的时候获取的不是最新的数据。

    有时候需要根据某些特殊的头部信息来决定是否进行缓存,则可以使用如下指令:
    当头部信息中包含 Set-Cookie 时则跳过不进行缓存操作
    CacheIgnoreHeaders Set-Cookie
    有时候需要缓存的时候跳过 URL 中的查询字符串?使用如下指令:
    CacheIgnoreQueryString On

    Apache 的缓存系统不仅可以缓存服务器本身的文件,也可以缓存通过代理得到的内容,对了,Apache 可以像 Squid 一样做代理,而且做的还不错,下篇文章就介绍一下 Apache 的代理功能吧。善用 Apache 的缓存功能,可以让你的网站速度提升不少。做为一个网站来说,虽然可用的各种缓存方案很多,但在 Web 服务器层做缓存的效率还是很值得一试的。

     

     

     

     

     

     

    /bin/rm: cannot remove `libtoolT’: No such file or directory 解决方案

    这时直接打开 configure,把 $RM “$cfgfile” 那行删除掉,重新再运行 ./configure 就可以了。

     

     

     

     

     

     

     

     

     

     

     

     

     

    apache利用mod_cache缓存图片等

    张映 发表于 2010-07-06

    分类目录: apache/nginx

    一,引言

    以前我写过二篇有关图片,静态文件的缓存文章,一个是用varnish来缓存,一个用squid来缓存,apache当然也可以用来做图片,静态文件的缓存,下面我将详细说明一下,怎么完装和配置

    二,安装mod_cache,mod_mem_cache,mod_disk_cache

    先查一下,安装apache的时候,有没有安装这些模块,如果没有安装就安装一下,请参考apache怎么安装模块,查看是否安装

    [zhangy@BlackGhost error]$ /usr/local/apache2/bin/httpd -l

    如果没有mod_cache.c,mod_mem_cache.c,mod_disk_cache.c说明没有装mod_mem_cache,mod_disk_cache不一定要都装,你可以二选一

    三,内存缓存配置

    nano /usr/local/apache2/conf/httpd.conf

    1. LoadModule cache_module modules/mod_cache.so   
    2. <IfModule mod_cache.c>   
    3. LoadModule mem_cache_module modules/mod_mem_cache.so   
    4. <IfModule mod_mem_cache.c>   
    5. CacheEnable mem /images   
    6. MCacheSize 4096   
    7. MCacheRemovalAlgorithm LRU   
    8. MCacheMaxObjectCount 100   
    9. MCacheMinObjectSize 1   
    10. MCacheMaxObjectSize 2048   
    11. CacheMaxExpire 864000   
    12. CacheDefaultExpire 86400   
    13. CacheDisable /php   
    14. </IfModule>   
    15. </IfModule>  
    LoadModule cache_module modules/mod_cache.so
    <IfModule mod_cache.c>
    LoadModule mem_cache_module modules/mod_mem_cache.so
    <IfModule mod_mem_cache.c>
    CacheEnable mem /images
    MCacheSize 4096
    MCacheRemovalAlgorithm LRU
    MCacheMaxObjectCount 100
    MCacheMinObjectSize 1
    MCacheMaxObjectSize 2048
    CacheMaxExpire 864000
    CacheDefaultExpire 86400
    CacheDisable /php
    </IfModule>
    </IfModule>
    

    说明:

    1,CacheEnable mem /images 缓存images下面的内容,这里的 mem只是一个缓存类型,指示mod_cache使用内存的存储管理器通过实施mod_mem_cache 。缓存类型disk指示mod_cache使用基于磁盘的存储管理的实施mod_disk_cache 。缓存类型,fd指示mod_cache使用文件描述符缓存实施mod_mem_cache

    2,MCacheSize最大内存使用量,插入在缓存和对象大小的对象是大于剩余内存,将被删除,直到新的对象可以被缓存。 被删除的对象选择使用指定的算法MCacheRemovalAlgorithm

    3,MCacheRemovalAlgorithm缓存算法:

    LRU (最近最少使用)
    LRU删除文件,没有时间最长的被访问的。
    GDSF(GreadyDual尺寸)
    GDSF分配一个优先的文件缓存文件的费用的基础上,缓存大小和怀念。以最低的优先权文件被删除第一次。

    4,MCacheMaxObjectCount最大缓存对像个数

    5,MCacheMaxObjectCount最大缓存对像字节数

    6,MCacheMinObjectSize最小缓存对像字节数

    7,CacheMaxExpire 最大缓存结止时间

    8,CacheDefaultExpire  默认缓存结止时间

    9,CacheDisable /php       不缓存php下面的内容

    查看内存是不是缓存了东西

    apache查看有没有在内存中缓存东西,不是很好查,没有专门的工具来查看,我的方法如下,

    1,浏览图片http://localhost/images/http_imgload.cgi.jpeg

    2,查看一下[zhangy@BlackGhost error]$ top -b -n1

    3,浏览图片http://localhost/images/myself.jpeg

    4,查看一下[zhangy@BlackGhost error]$ top -b -n1

    6018 zhangy    20   0 52612 8172 2484 S    0  0.8   0:00.03 httpd
    6020 zhangy    20   0 52604 8168 2488 S    0  0.8   0:00.02 httpd
    6021 zhangy    20   0 52604 8100 2440 S    0  0.8   0:00.00 httpd
    6022 zhangy    20   0 52604 8100 2440 S    0  0.8   0:00.00 httpd
    6033 zhangy    20   0  6584 1808 1396 S    0  0.2   0:00.02 bash
    6076 zhangy    20   0 52612 8136 2464 S    0  0.8   0:00.02 httpd
    6077 zhangy    20   0 52612 8124 2448 S    0  0.8   0:00.05 httpd
    6078 zhangy    20   0 52612 8168 2488 S    0  0.8   0:00.12 httpd
    6079 zhangy    20   0 52612 8168 2488 S    0  0.8   0:00.03 httpd
    6080 zhangy    20   0 52612 8168 2488 S    0  0.8   0:00.06 httpd
    6081 zhangy    20   0 52612 8116 2448 S    0  0.8   0:00.00 httpd

    通过上面的4步操作,你可以发现上面加粗部分的RES是不断增加的,由起可见,配置已经成功。

    四,硬盘缓存配置

    nano /usr/local/apache2/conf/httpd.conf

    1. LoadModule cache_module modules/mod_cache.so   
    2. <IfModule mod_cache.c>   
    3. LoadModule disk_cache_module modules/mod_disk_cache.so   
    4. <IfModule mod_disk_cache.c>   
    5. CacheRoot /home/zhangy/cachetest   
    6. #CacheSize 256   
    7. CacheEnable disk /   
    8. CacheDirLevels 4   
    9. #CacheMaxFileSize 64000   
    10. #CacheMinFileSize 1   
    11. #CacheGcDaily 23:59   
    12. CacheDirLength 3   
    13. </IfModule>   
    14. </IfModule>  
    LoadModule cache_module modules/mod_cache.so
    <IfModule mod_cache.c>
    LoadModule disk_cache_module modules/mod_disk_cache.so
    <IfModule mod_disk_cache.c>
    CacheRoot /home/zhangy/cachetest
    #CacheSize 256
    CacheEnable disk /
    CacheDirLevels 4
    #CacheMaxFileSize 64000
    #CacheMinFileSize 1
    #CacheGcDaily 23:59
    CacheDirLength 3
    </IfModule>
    </IfModule>

    说明:

    1,cacheroot /home/zhangy/cachetest  缓存存放的目录

    2,#CacheSize 256         缓存空间大小单位KB

    3,CacheEnable disk /    设置缓存方式

    4,#CacheMaxFileSize 64000    最大缓存文件大小

    5,#CacheMinFileSize 1      最小缓存文件大小

    6,#CacheGcDaily 23:59     缓存清理时间

    7,CacheDirLength 3        缓存文件夹名子字符长度

    8,CacheDirLevels 4        缓存目录,子目录层次

    注释掉的部分,我的apache版本不支持。官方手册上面有。具体需求请参考官方网站

    查看缓存:

    1,查看cacheroot有没有东西

    apache cache

    apache cache

    如果CacheRoot下面有东西,说明已经OK了。

    2,用htcacheclean来查看

    [root@BlackGhost cache]# /usr/sbin/htcacheclean -v -p /home/zhangy/cachetest -l 1024M
    Statistics:
    size limit 1024.0M
    total size was 29.2K, total size now 29.2K
    total entries was 3, total entries now 3

    htcacheclean  部分参数说明下

    -d  每隔多长时间清一个缓存

    -D 模拟清除缓存,但不是真的清

    -v 显示统计信息

    -r 彻底清除

    -t 清除空目录

    -p 缓存目录

    -l 限定缓存大小

    转载请注明
    作者:海底苍鹰
    地址:http://blog.51yip.com/apachenginx/898.html

     

     

     

    今天在安装服务器的apache的时候,下载最新的httpd2.2.22源码包进行编译,发现在make的时候报
    byterange_filter.c.text+0x12c1): undefined reference to `apr_array_clear'
    collect2: ld returned 1 exit status
    make[1]: *** [httpd] Error 1
    make[1]: Leaving directory `/tmp/httpd-2.2.22'
    make: *** [all-recursive] Error 1
    的错误,

    解决方案:

    编译apache之前应该先安装apr和apr-util,然后编译选项加上apr和apr-util的安装路径

    ./configure --prefix=/usr/local/apache --with-included-apr --with-apr=/usr/local/Hash/apr-1.3.8/ --with-apr-util=/usr/local/Hash/apr-util-1.3.8/ --enable-so --enable-rewrite --enable-ssl

     

     

     

     


    APACHE安装_cannot install `libaprutil-1.la' to a directory解决
     
    在linux上安装了默认的apache2目录后,想安装apache3,进入安装,
     
    执行了configure,make后
     
    make install时出错: 
    /bin/sh /usr/local/httpd-2.2.3/srclib/apr/libtool --mode=install /usr/bin/install -c -m 755 libaprutil-1.la /usr/local/apache2/lib
    libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending in /usr/local/apache2/lib  www.2cto.com  
    make[2]: *** [install] Error 1
    猜测可能是以前安装用过./configure 来直接安装到/usr/local/apache2
    导致安装文件已经不太“干净”
     
    解决方法:
    1、执行make clean后,重新编译安装。
    2、删除source code目录,重新解压apache安装包,进行编译安装,可解决上面的问题。
    另外,在处理FCGI安装时,也会默认安装到 apache2 目录,这时你需要 修改 Makefile 文件,将里面的目录进行更改。
     

     

     

     

    采用apache mod_expires缓存静态文件的好处:

    采用静态文件缓存能提高服务器的性能,有以下好处:

          1.缩短服务的响应时间

          2.减轻服务器负担

          3.减少网络带宽使用量

     程序修正方法

        在每次更改静态内容(css,js等)时,对名称也进行更改。

        附加版本号或Build编号。

    <link href="/html/std.css?v=2.5.3.text" rel="stylesheet" type="text/css">

    <link rel="stylesheet" type="text/css" href="html/std.css?_v=804120090827100441.css" />

    服务器端实际的css文件名仍然为std.css,在html页面里需要添加版本号。

    添加版本号之后,每次更新css或者js用户不用CTRL+F5刷新,就可以看到修改后的页面。

     

     Apache的修正方法:

      在安装apache的时Configure步骤中添加--enable-expires

    安装之后,在apache安装目录的modules目录里会有:mod_expires.so

    同时在Httpd.conf会自动添加

    LoadModule expires_module modules/mod_expires.so

     

     Httpd.conf配置

     

    ExpiresActive on

    #缓存3天。

    ExpiresBytype text/css "access plus 3 days

    ExpiresByType application/x-javascript "access plus 3 days "

    ExpiresByType image/jpeg "access plus 3 days "

    Expiresbytype image/gif "access plus 3 days "


     

     

    展开全文
  • nginx和apache设置不缓存文件

    千次阅读 2015-03-24 19:35:05
    开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache缓存配置和nginx不缓存配置的设置。 apache: 首先确定配置文件httpd.conf中确已经加载mod_...

    在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。

    apache:

    首先确定配置文件httpd.conf中确已经加载mod_headers模块。

    LoadModule headers_module modules/mod_headers.so

    我们可以根据文件类型来让浏览器每次都从服务器读取,这里测试用css、js、swf、php、html、htm这几种文件。

    <FilesMatch “.(css|js|swf|php|htm|html)$”>
    
        Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    
        Header set Pragma "no-cache"
    
       </FilesMatch>

    nginx:

    location ~ .*.(css|js|swf|php|htm|html )$ {
    
        add_header Cache-Control no-store;
    
        }

    该博文转载自http://www.21ops.com/ops/24581.html

    展开全文
  •  对于,如何说明缓存机制,网络上找到了两张图,个人认为思路是比较清晰的。总结时,上图。  这里需要注意的有两点:  1、Last-Modified、Etag是响应头里的数据  2、If-None-Match、If-Modified-Since是...

    一、详解浏览器缓存机制

      对于,如何说明缓存机制,在网络上找到了两张图,个人认为思路是比较清晰的。总结时,上图。

      这里需要注意的有两点:

         1、Last-Modified、Etag是响应头里的数据

         2、If-None-Match、If-Modified-Since是请求头里的数据

     

         Last-Modified/If-Modified-Since这种搭配,好像已经过时了。在测试时,就是关掉etag,并时间过期了,服务器也照样返回304。

      Etag/If-None-Match这种搭配,还挺好用的。测试时,可用。那就解释下什么是etag?什么是if-none-match?

        etag:当前资源的唯一标识。是文件的索引节、文件大小、文件创建时间组合的hash。

        if-none-match:这就是上面etag的copy。但是,请求服务器时,如果发现if-none-match与etag不对应时,就说明文件被修改了,这时返回200,重新获取文件,没修改则返回304,继续使用缓存文件。

     

      好了,可以看流程图了。

      首次访问页面时的流程

      

      再次访问页面时的流程

       

      

     

      第一次看的时候有点蒙,于是,又给装修了下。再次亮图。

         

        以上几张流程图就很好说了浏览器的缓存机制。

         

    二、Apache设置缓存

      使用Apache的.htaccess设置缓存有三种方法

        第一种方法:

          在Apache开启mod_expires.so模块

          在配置文件中打开:LoadModule expires_module modules/mod_expires.so

          在.htaccess添加以下内容

    复制代码
    <IfModule mod_expires.c>
    #打开缓存
    ExpiresActive On
    #默认对所有资源缓存600秒
    ExpiresDefault A600
    #png格式的资源缓存5秒
    ExpiresByType image/png A5
    #jpg格式的资源缓存50秒
    ExpiresByType image/jpg A50
    
    #好含这些后缀的资源,都缓存100秒
    <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
    ExpiresDefault A100
    </FilesMatch>
    
    </IfModule>
    复制代码

          

        第二种方法:

          在Apache开启mod_headers模块

          去配置文件中添加以下内容:

            LoadModule headers_module modules/mod_headers.so

          在.htaccess中添加内容:

    #包含这些后缀的资源都缓存33秒
    <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=33"
    </FilesMatch>

        

        第三种方法:

          在.htaccess添加以下内容:

    FileEtag INode Mtime Size

          要关闭etag,则添加以下内容:

    FileEtag none

        

     

     

     

        经过测试,这几种方法同时使用,则会出现优先级:

          第三种方法>第二种方法>第一种方法

        还发现了一些小知识,Apache不缓存能解析的资源文件,比如php、php3等。如果修改配置文件,致使可以解析jpg格式的文件,那就不能缓存jpg格式的文件。可在配置文件中,添加以下代码,做测试:

            AddType application/x-httpd-php .jpg


     参考网页:

      http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html

      http://my.oschina.net/leejun2005/blog/369148

      http://yixun.yxsss.com/yw13.html


    展开全文
  • apache 下配置gzip 和静态文件缓存

    千次阅读 2014-05-28 17:03:28
    apache 下配置gzip 和静态文件缓存
  • CDN缓存原理、策略

    千次阅读 2014-03-23 21:00:59
    CDN服务器直接返回缓存文件或通过专线代理原站的内容。  网络加速+内容缓存,有效提供访问速度  2.CDN节点数量  全国多个机房,每个机房多台服务器,CDN节点一般上百台  3.CDN缓存什么内容  缓存html、...
  • PHP常用缓存技术的总结

    万次阅读 2017-07-01 18:23:53
    此种方式CMS系统中比较常见,如dedecms。 实现方法:输出缓存 ob_start()--打开“输出控制缓冲”; some code --要运行的代码; $content=ob_get_contents()--返回“输出缓冲区的内容”; some code --使用fil
  • ThinkPHP出现 缓存文件写入失败!

    千次阅读 2016-04-21 09:51:49
    解决方案 一种情况是相应的目录没有写入权限,使用chmod命令添加apache程序的w权限即可。 另一种可能的情况是磁盘空间满了,使用df -h 进行检查。
  • LNMP与LAMP有哪些区别,安装哪个好?

    千次阅读 2019-06-07 13:53:49
    很多小白对服务器的网站环境,不知道是装apache好,还是装nginx好,下面笔者为大家科普相关知识! lamp 的全称是linux + apache + mysql +php lnmp 的全称是linux + nginx + mysql + php (国外喜欢简称为LEMP,...
  • 服务器缓存技术

    千次阅读 2016-08-22 15:29:45
    对服务器在网站中位置作用有个大概了解: 上图主要介绍了三种服务器,也是比较常用的服务器,下面就介绍这三种...用户1访问A页面,服务器解析A页面返回给用户1,同时在服务器内存上做一定映射,把A页面缓存在
  • LAMP网站架构

    千次阅读 2012-10-29 16:47:51
    LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据 库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架...
  • Linux-Apache-MySQL-PHP网站架构方案分析

    千次阅读 2013-06-14 09:57:04
    LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,...
  • apache编译安装的参数说明

    千次阅读 2014-12-18 11:58:55
    apache编译安装参数说明 ./configure //配置源代码树 --prefix=/usr/local/apache2 //体系无关文件的顶级安装目录prefix ,也就apache的安装目录。如果没有指定PREFIX,默认会装到/usr/local/apache2。 --...
  • 大型网站后台架构的web server与缓存

    万次阅读 2011-07-30 18:14:37
    网站的web server与缓存 1.1 Web server Webserver 用来解析HTTP协议。当web 服务器接收到一个HTTP请求时,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,web服务器可以响应一个静态页面或者图片。...
  • nginx及apache缓存配置;

    千次阅读 2014-02-10 16:21:42
    今天碰见一个问题,我们要对页面实际展现量做一个统计,也不想给统计的pvcall.png加上时间戳,其实用nginx和apache自己的配置即可解决此问题,提供下apache缓存配置和nginx不缓存配置的设置。 apache: 首先确定...
  • 使用mod_disk_cache做页面缓存时,发现有些php无法缓存每次访问页面的时候,http响应头里都会返回以下行项头信息Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate,...
  • apache基于域名的虚拟主机配置

    千次阅读 2016-05-30 12:41:22
    将多个域名解析到同一个IP上;关于域名的查找顺序如下;apache配置等;
  • 转载自:随着PHP流行,PHP的执行效率也越来越被大家关注,可以选择的缓存器也是越来越多,从老的php-memcache到eaccelerator还有新兴的xcache。为了挑选一个合适的缓存器决定自己实测一下,看看哪个缓存器的效率更高...
  • 禁用opcache缓存

    千次阅读 2016-01-19 14:56:42
    今天yii+apache2开发的过程中,上传了代码到web服务器上,每次都要等待几十秒中之后,修改的代码才会反应过来,一查,原来是php.ini中开启了 opcahce 。下面是禁用 opcache 的方式。 通过phpinfo来查看php.ini文件...
  • Apache启用mod_expires模块

    万次阅读 2011-07-14 10:02:41
    mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE本地,根本不向服务器发出请求。 使用之前,首先要确认一下”mod_expires”模组是否有启用.如果是自己安装Apache来架设网页...
1 2 3 4 5 ... 20
收藏数 61,314
精华内容 24,525
热门标签
关键字:

php 在apache 缓存