您会推荐我什么缓存设置?

您会推荐我什么缓存设置?

我正在寻找一些示例代码,以帮助我开始尝试使用 Apache、.htacces 或 httpd.conf 进行缓存控制。

谁能给我一些我可以复制粘贴的代码?(然后开始自己调整)

假设我想

缓存 js、css、图片 30 天

不缓存我的 html,因为它每隔几分钟就会更新一次,所以

not cache anything ending in .php, .html or '/'

我不想让这看起来像是我在要求别人为我做这件事——我只是在寻找一些可以开始摆弄的代码!

答案1

正如 Konerak 所说,您可以使用 mod_expires,要在 shell 中启用它,请执行以下操作:

# for ubuntu
sudo a2enmod expires
sudo service apache2 restart

# or, for other distros as root:
a2enmod expires
/etc/init.d/apache2 restart
/etc/init.d/httpd restart

这是一个肯定能满足您需求的 vhost 配置:

<VirtualHost *:80>
    [...]

    ExpiresActive On
    ExpiresByType image/gif "access plus 30 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/x-icon "access plus 30 days"
    ExpiresByType image/ico "access plus 30 days"
    ExpiresByType text/css "access plus 30 days"
    ExpiresByType application/javascript "access plus 30 days"
    ExpiresByType application/x-javascript "access plus 30 days"
    ExpiresByType text/javascript "access plus 30 days"

    [...]
</VirtualHost>

其余所有内容都不应被缓存。

该脚本摘自我的网站配置,网址为http://www.codealpha.net/您可以看到它仅缓存图像。(未启用 Javascript 缓存。)

文档: http://httpd.apache.org/docs/2.0/mod/mod_expires.html

答案2

使用来自 Apache 的 mod_expires。您应该研究一下 ExpiresByType。

答案3

到期日期

    # expire All after a month in the client's cache
    ExpiresDefault A2592000

    # HTML documents are good for a week from the time they were changed
    ExpiresByType text/html M604800
    ExpiresByType application/javascript M604800
    ExpiresByType text/javascript M604800
    ExpiresByType text/css M604800

    # Don't cache
        <FilesMatch "\.(php)$">
            ExpiresActive Off
        </FilesMatch>

相关内容