2011-04-03 39 views
14

当我测试我的网站SpeedTest我看到很多过期未指定错误。您可以在this page看到。指定过期日期为静态文件的缓存

我将此代码添加到我的.htaccess文件

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType text/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access 2 days" 
</IfModule> 
## EXPIRES CACHING ## 

但什么都没有改变。你能给我一个建议,因为我可以指定我的静态文件的到期日期吗?

服务器:采用Linux - 阿帕奇

+0

会发生什么事,如果你删除从开头和结尾的''行?如果模块没有安装,这应该会导致500错误。 – clmarquart 2011-04-09 18:49:31

+0

您是否在更改配置文件后重新启动服务器? – alexy13 2011-04-13 13:23:46

回答

0

也许你没有加载指定mod_expires,所以整个节是一个空操作。或者,AllowOverride是None并且您的.htaccess文件未处理。

+0

我可以使用Wordpress'.htaccess重写规则。 – Eray 2011-04-08 12:20:28

+0

ifModule问题呢?你是否使用命令行http客户端检查头文件或只是重新运行速度工具? – covener 2011-04-08 19:41:59

+0

我没有足够的经验。所以我无法检查ifModule问题。 – Eray 2011-04-09 10:20:47

4

可以mod_headers中使用这样的伎俩:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
    Header set Cache-Control "max-age=290304000, public" 
</FilesMatch> 

或者你可以使用指定mod_expires:

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

我看你有PHP安装(参考WordPress的),所以我们会尽力诊断你的问题:

  1. 重新启动你的apache web服务器。如果你拥有Apache服务器(命令行访问),你可以这样做like such
  2. create a phpinfo page。这将允许您查看已安装的apache模块。检查您希望使用的mod_expires.c模块(应该能够在浏览器中为mod_expires执行CTL-F(查找)请求)。如果你发现它 - 好!如果没有,你需要在你的apache服务器上安装mod_expires。如果您拥有您的apache服务器,您可以搜索如何为特定操作系统安装模块。如果没有,您可以与您的托管服务提供商确认如何安装此模块。一旦安装,继续。
  3. 修改您的http.conf项,包括你的表达
  4. 重新启动Apache再次
  5. 测试 “加”=)
35

我喜欢html5boilerplate方式:

<IfModule mod_expires.c> 
    ExpiresActive on 

# Perhaps better to whitelist expires rules? Perhaps. 
    ExpiresDefault       "access plus 1 month" 

# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5) 
    ExpiresByType text/cache-manifest  "access plus 0 seconds" 

# your document html 
    ExpiresByType text/html     "access plus 0 seconds" 

# data 
    ExpiresByType text/xml     "access plus 0 seconds" 
    ExpiresByType application/xml   "access plus 0 seconds" 
    ExpiresByType application/json   "access plus 0 seconds" 

# rss feed 
    ExpiresByType application/rss+xml  "access plus 1 hour" 

# favicon (cannot be renamed) 
    ExpiresByType image/x-icon    "access plus 1 week" 

# media: images, video, audio 
    ExpiresByType image/gif     "access plus 1 month" 
    ExpiresByType image/png     "access plus 1 month" 
    ExpiresByType image/jpg     "access plus 1 month" 
    ExpiresByType image/jpeg    "access plus 1 month" 
    ExpiresByType video/ogg     "access plus 1 month" 
    ExpiresByType audio/ogg     "access plus 1 month" 
    ExpiresByType video/mp4     "access plus 1 month" 
    ExpiresByType video/webm    "access plus 1 month" 

# htc files (css3pie) 
    ExpiresByType text/x-component   "access plus 1 month" 

# webfonts 
    ExpiresByType font/truetype    "access plus 1 month" 
    ExpiresByType font/opentype    "access plus 1 month" 
    ExpiresByType application/x-font-woff "access plus 1 month" 
    ExpiresByType image/svg+xml    "access plus 1 month" 
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month" 

# css and javascript 
    ExpiresByType text/css     "access plus 2 months" 
    ExpiresByType application/javascript "access plus 2 months" 
    ExpiresByType text/javascript   "access plus 2 months" 

    <IfModule mod_headers.c> 
    Header append Cache-Control "public" 
    </IfModule> 

</IfModule> 

希望这可以对你有用。 来源: https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess

+0

您的链接已损坏!请更新它。无论如何,+1的答案。 – Zuul 2013-01-19 15:54:46

+1

固定链接。谢谢,祖鲁。 – Eduardo 2013-01-29 18:25:44

0

你只需要添加:

ExpiresByType application/javascript "access plus 1 year"