【问题标题】:Apache -Caching: How to Configure Response headers in Apache 2+.Apache -Caching:如何在 Apache 2+ 中配置响应标头。
【发布时间】:2011-04-12 03:12:21
【问题描述】:

我是 Apache 配置和缓存方面的新手。

我想在 Apache 中设置一些标题(例如 max-age、min-fresh、last modified 等)。

已检查模块是否存在以及是否已安装和加载......

已编辑 httpd.conf 并在对缓存标头进行一些更改后重新启动。

例如

<FilesMatch "\.(ico|pdf|flv|jpe?g|png|gif|js|css|swf)$">

   ExpiresActive On

   ExpiresDefault "access plus 1 year" 
</FilesMatch>`  



Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
    Header unset Last-Modified
    Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT"
    Header set Cache-Control "public, no-transform"
</FilesMatch>

甚至尝试了不同的其他方法,当我尝试检查客户端(MSIE 和 Mozilla)的响应时。这些标头都没有响应。

LoadModule foo_module modules/mod_foo.so

LoadModule auth_basic_module modules/mod_auth_basic.so  
LoadModule auth_digest_module modules/mod_auth_digest.so  
LoadModule authn_file_module modules/mod_authn_file.so  
LoadModule include_module modules/mod_include.so  
LoadModule log_config_module modules/mod_log_config.so  
LoadModule logio_module modules/mod_logio.so  
LoadModule env_module modules/mod_env.so  
LoadModule ext_filter_module modules/mod_ext_filter.so  
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so  
LoadModule headers_module modules/mod_headers.so  
LoadModule dav_module modules/mod_dav.so  
LoadModule status_module modules/mod_status.so  
LoadModule autoindex_module modules/mod_autoindex.so  
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so  
# ......
LoadModule cache_module modules/mod_cache.so  
LoadModule suexec_module modules/mod_suexec.so  
LoadModule disk_cache_module modules/mod_disk_cache.so  
LoadModule file_cache_module modules/mod_file_cache.so  
LoadModule mem_cache_module modules/mod_mem_cache.so  
LoadModule cgi_module modules/mod_cgi.so   
and these are located on specific directory ....  
(shows the desired output -- ls /etc/httpd/modules | egrep "headers|expire")   

这些是我所做的唯一更改。如果我遗漏了什么或做错了什么,请告诉我,

【问题讨论】:

    标签: apache caching header


    【解决方案1】:

    过期可能不起作用,因为未设置 mime 类型。您显示 mime_magic_module modules/mod_mime_magic.so 已加载,但您仍然可以使用 AddType 然后使用 ExpiresByType 而不是 FilesMatch。此外,您应该在 Cache-Control "Public" 之前设置 Pragma "public"。

    这是我使用的防弹过期、gzip、FileEtag 和缓存控制。它适用于大多数 Apache 配置。

    <IfModule mod_mime.c>
        AddType text/css .css
        AddType application/x-javascript .js
        AddType text/html .html .htm
        AddType text/richtext .rtf .rtx
        AddType image/svg+xml .svg .svgz
        AddType text/plain .txt
        AddType text/xsd .xsd
        AddType text/xsl .xsl
        AddType text/xml .xml
        AddType video/asf .asf .asx .wax .wmv .wmx
        AddType video/avi .avi
        AddType image/bmp .bmp
        AddType application/java .class
        AddType video/divx .divx
        AddType application/msword .doc .docx
        AddType application/x-msdownload .exe
        AddType image/gif .gif
        AddType application/x-gzip .gz .gzip
        AddType image/x-icon .ico
        AddType image/jpeg .jpg .jpeg .jpe
        AddType application/vnd.ms-access .mdb
        AddType audio/midi .mid .midi
        AddType video/quicktime .mov .qt
        AddType audio/mpeg .mp3 .m4a
        AddType video/mp4 .mp4 .m4v
        AddType video/mpeg .mpeg .mpg .mpe
        AddType application/vnd.ms-project .mpp
        AddType application/vnd.oasis.opendocument.database .odb
        AddType application/vnd.oasis.opendocument.chart .odc
        AddType application/vnd.oasis.opendocument.formula .odf
        AddType application/vnd.oasis.opendocument.graphics .odg
        AddType application/vnd.oasis.opendocument.presentation .odp
        AddType application/vnd.oasis.opendocument.spreadsheet .ods
        AddType application/vnd.oasis.opendocument.text .odt
        AddType audio/ogg .ogg
        AddType application/pdf .pdf
        AddType image/png .png
        AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
        AddType audio/x-realaudio .ra .ram
        AddType application/x-shockwave-flash .swf
        AddType application/x-tar .tar
        AddType image/tiff .tif .tiff
        AddType audio/wav .wav
        AddType audio/wma .wma
        AddType application/vnd.ms-write .wri
        AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
        AddType application/zip .zip
    </IfModule>
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType text/css A31536000
        ExpiresByType application/x-javascript A31536000
        ExpiresByType text/html A3600
        ExpiresByType text/richtext A3600
        ExpiresByType image/svg+xml A3600
        ExpiresByType text/plain A3600
        ExpiresByType text/xsd A3600
        ExpiresByType text/xsl A3600
        ExpiresByType text/xml A3600
        ExpiresByType video/asf A31536000
        ExpiresByType video/avi A31536000
        ExpiresByType image/bmp A31536000
        ExpiresByType application/java A31536000
        ExpiresByType video/divx A31536000
        ExpiresByType application/msword A31536000
        ExpiresByType application/x-msdownload A31536000
        ExpiresByType image/gif A31536000
        ExpiresByType application/x-gzip A31536000
        ExpiresByType image/x-icon A31536000
        ExpiresByType image/jpeg A31536000
        ExpiresByType application/vnd.ms-access A31536000
        ExpiresByType audio/midi A31536000
        ExpiresByType video/quicktime A31536000
        ExpiresByType audio/mpeg A31536000
        ExpiresByType video/mp4 A31536000
        ExpiresByType video/mpeg A31536000
        ExpiresByType application/vnd.ms-project A31536000
        ExpiresByType application/vnd.oasis.opendocument.database A31536000
        ExpiresByType application/vnd.oasis.opendocument.chart A31536000
        ExpiresByType application/vnd.oasis.opendocument.formula A31536000
        ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
        ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
        ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
        ExpiresByType application/vnd.oasis.opendocument.text A31536000
        ExpiresByType audio/ogg A31536000
        ExpiresByType application/pdf A31536000
        ExpiresByType image/png A31536000
        ExpiresByType application/vnd.ms-powerpoint A31536000
        ExpiresByType audio/x-realaudio A31536000
        ExpiresByType application/x-shockwave-flash A31536000
        ExpiresByType application/x-tar A31536000
        ExpiresByType image/tiff A31536000
        ExpiresByType audio/wav A31536000
        ExpiresByType audio/wma A31536000
        ExpiresByType application/vnd.ms-write A31536000
        ExpiresByType application/vnd.ms-excel A31536000
        ExpiresByType application/zip A31536000
    </IfModule>
    <IfModule mod_deflate.c>
        <IfModule mod_setenvif.c>
            BrowserMatch ^Mozilla/4 gzip-only-text/html
            BrowserMatch ^Mozilla/4\.0[678] no-gzip
            BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
            BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        </IfModule>
        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
    <FilesMatch "\.(css|js)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header set Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
    </FilesMatch>
    <FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header set Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
    </FilesMatch>
    <FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header set Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
    </FilesMatch>
    

    【讨论】:

      【解决方案2】:

      不知道为什么你的配置没有按预期工作,但是......

      比从响应中省略 Etag 和 last-modified 更好的解决方案是从请求中删除 if-none-match 和 if-modified_since。

      我希望 ExpiresDefault 设置具有预期的效果,但是我只使用了 ExpiresByType 设置(这些对我有用)。您的第一个块还应包含适当的缓存控制标头(max-age)。

      为什么是第二个区块?

      您在启动时检查过您的 error_log 吗?

      【讨论】:

        猜你喜欢
        • 2012-10-16
        • 2021-03-13
        • 2013-04-24
        • 2014-09-29
        • 2014-10-02
        • 2014-09-06
        • 2015-09-29
        • 2020-12-13
        • 2012-06-12
        相关资源
        最近更新 更多