.htaccess - 从URL缓存文件,如/ files / large / 6

时间:2011-11-08 20:16:59

标签: .htaccess codeigniter caching clean-urls

我们有一个多站点CMS来处理图像和其他类似文件..

我们如何使用.htaccess缓存www。(或非www。)variable-domain.com/files/*中的图像和其他文件?

这导致500错误。我删除了一些..这里是我目前的工作原理(减去目录和内容部分 - 当包含这些内容时它会抛出错误。)

#
#   Force Browser Cache
#
<ifmodule mod_expires.c>
ExpiresActive On

<filesmatch "\.(jpg|gif|png|css|js)$">
    ExpiresDefault "access plus 1 year"
</filesmatch>

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=2592000"
</FilesMatch>

<FilesMatch ".(js|css|pdf|txt)$">
    Header set Cache-Control "max-age=604800"
</FilesMatch>

<Directory "/home/aiwebsystems/public_html/uploads">
    <FilesMatch "\.(gif|jpg|png|js|css)$">
        ExpiresDefault "access plus 1 year"
    </FilesMatch>
</Directory>

</ifmodule>

我还需要包含所有子目录......

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用Apache的 mod_expires

例如在.htaccess中:

ExpiresActive On

<Directory "/path/to/public_html/files">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    ExpiresDefault A300
    <FilesMatch "\.html$">
        Expires A86400
    </FilesMatch>
    <FilesMatch "\.(gif|jpg|png|js|css)$">
        Expires A2592000
    </FilesMatch>
</Directory>

A300意味着用户缓存副本在访问后300秒到期。 (A86400是访问后的第二天,A2592000是访问后的一个月)

如果您的意思是服务器端缓存,那么您很幸运,因为操作系统最近使用“分页”算法进行缓存:http://en.wikipedia.org/wiki/Paging

答案 1 :(得分:1)

htaccess中不允许

<Directory>

只需使用过期内容创建一个新的.htaccess文件,并将其放在“uploads”目录中。这将与您尝试实现相同的效果

答案 2 :(得分:0)

因为它没有扩展,所以没有一个工作。我最后更改了代码,现在它运行得很好,使用文件名而不是图像ID作为最后一个URI参数。