zoukankan      html  css  js  c++  java
  • Apache开启deflate(Gzip)和Expires提升网页加载速度(三)

    在Apache的配置文件中找到下面行,将注释#去掉,重启。

    LoadModule deflate_module modules/mod_deflate.so  
    LoadModule expires_module modules/mod_expires.so  
    LoadModule header_module modules/mod_header.so  

    在http.conf后面加上这一段进行定制:(如非必要,用默认的就好了)

    <ifmodule mod_deflate.c>  
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/x-httpd-php text/javascript application/x-javascript text/css  
    AddOutputFilter DEFLATE js css         #压缩js,css文件  
    # Don't compress images                                           #对照片文件不进行压缩处理  
    SetEnvIfNoCase Request_URI (?:gif|jpe?g|png)$ no-gzip dont-vary  
    SetEnvIfNoCase Request_URI (?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary  
    SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary  
    #SetEnvIfNoCase Request_URI .(css|js)$ no-gzip dont-vary  
    # Make sure proxies don't deliver the wrong content  
    Header append Vary User-Agent env=!dont-vary  
    DeflateCompressionLevel 6  
    SetOutputFilter DEFLATE  
    </ifmodule>  
    <IfModule mod_expires.c>  
    ExpiresActive On  
    ExpiresByType text/css "now plus 1 month"  
    ExpiresByType application/x-javascript "now plus 5 day"  
    ExpiresByType image/jpeg "access plus 1 month"  
    ExpiresByType image/gif "access plus 1 month"  
    ExpiresByType image/bmp "access plus 1 month"  
    ExpiresByType image/x-icon "access plus 1 month"  
    ExpiresByType image/png "access plus 1 month"  
    ExpiresByType application/x-shockwave-flash "access plus 1 month"  
    </IfModule>  
    #使用mod_headers  
    #在.htaccess文件中添加如下内容可以实现缓存:  
    <ifmodule mod_headers.c>  
    # htm,html,txt类的文件缓存一个小时  
    <filesmatch "/.(html|htm|txt)$">  
    header set cache-control "max-age=3600"  
    </filesmatch>  
    # css, js, swf类的文件缓存一个星期  
    <filesmatch "/.(css|js|swf)$">  
    header set cache-control "max-age=604800"  
    </filesmatch>  
    # jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年  
    <filesmatch "/.(ico|gif|jpg|jpeg|png|flv|pdf)$">  
    header set cache-control "max-age=29030400"  
    </filesmatch>  
    </ifmodule> 


    这样可以压缩一般网页中会用到的html、xml、php、css、js等格式档案输出,虽然会占用掉服务器处理器的一点点处理器时间,浏览者在接收 网页数据时也会消耗极短暂的一点点处理器时间,不过却可以大幅减少数据传输量,减少网络带宽被吃掉的情形。
    DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高等级。据了解,这样做最高可以减少8成大小的传输量(看档案内容而定),最少也能够节省一半。
    DeflateCompressionLevel 预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。
     

    Apache 手册 节选

    ExpiresDefault ExpiresByType 指令同样能够用易懂的语法格式进行定义:

    ExpiresDefault "<base> [plus] {<num> <type>}*"
    ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"

    其中<base>是下列之一:

    • access
    • now (等价于'access ')
    • modification

    plus 关键字是可选的。<num>必须是整数[可以被atoi() 接受的],<type>是下列之一:

    • years
    • months
    • weeks
    • days
    • hours
    • minutes
    • seconds

    例如,下列3个指令都表示文档默认的有效期是一个月:

    ExpiresDefault "access plus 1 month"
    ExpiresDefault "access plus 4 weeks"
    ExpiresDefault "access plus 30 days"

    有效期可以通过增加"<num> <type>"子句进一步调整:

    ExpiresByType text/html "access plus 1 month 15 days 2 hours"
    ExpiresByType image/gif "modification plus 5 hours 3 minutes"

    注意,如果你使用基于最后修改日期的设置,"Expires:"头将不会 被添加到那些并非来自于磁盘文件的内容。这是因为这些内容并不存在"最后修改时间"的属性。

  • 相关阅读:
    Linq系列:基础与本质(Part III)
    CLR系列:浅析委托
    8万亿 全球第二还是最二?
    CLR系列:窥视HashTable
    c#3.0系列:Anonymous Type In CLR(3.5)
    VC6 编译选项问题
    C++资源库不完全版本
    如何用C实现C++的特性
    几种用于WSN的仿真工具
    嵌入式编程的好资源
  • 原文地址:https://www.cnblogs.com/free3649/p/4067162.html
Copyright © 2011-2022 走看看