Drupal 7.0缓存问题!

时间:2011-06-23 07:21:07

标签: drupal .htaccess caching drupal-7

我刚刚完成了一个drupal项目,我正在经历网站的优化阶段。我已经在性能下检查了缓存块和CSS以及JS聚合,以获得更好的加载时间。但我注意到,当我运行页面速度测试或Yslow一切都通过但利用浏览器缓存。似乎没有在所有图像和css文件上设置到期日期。我的问题是我是否需要编辑.htaccess文件,还是需要将未缓存的图像和css文件放入特定文件夹?

感谢任何帮助,非常感谢提前

2 个答案:

答案 0 :(得分:2)

您可以使用mod_expiresmod_headers配置Apache为您的image / css / js文件设置特定的过期/缓存控制标头。

以下是一些示例(一般示例 - 在应用于您的系统之前分析和查阅手册):

<FilesMatch "\.(html|htm|js|css)$">
    FileETag None
    <IfModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
</FilesMatch>

使用mod_expires + mod_headers进行缓存

# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
    ExpiresDefault A29030400
    Header append Cache-Control "public"
</FilesMatch>

# Set up caching on media files for 1 week
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
    ExpiresDefault A604800
    Header append Cache-Control "public"
</FilesMatch>

# Set up 2 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
    ExpiresDefault A7200
    Header append Cache-Control "proxy-revalidate"
</FilesMatch>

# Force no caching for dynamic files
<FilesMatch "\.(php|cgi|pl|htm)$">
    ExpiresActive Off
    Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</FilesMatch>

答案 1 :(得分:0)

我长期遇到同样的问题而且我找到了诀窍!

查看位于drupal根存储库的.htaccess后,出现以下情况: <IfModule mod_expires.c> ... </IfModule>

由于apache的expires_module在我的服务器上没有启用,因此未执行内部代码,检查返回的列表中是否存在expires_module:

sudo apache2ctl -M

如果没有,只需通过以下方式激活它:

sudo a2enmod expires
sudo a2enmod headers
sudo service apache2 restart
相关问题