我如何添加缓存控制过期头图像


How do I add Cache Control expires header to images?

我想加快我网站的速度。YSlow提醒我,我的图像缺乏过期头。但是我如何在图像上应用这样的标题?

我的应用程序是基于zend框架。图像存储以及文件夹上的图像,我如何能够设置过期头为他们?

如果你使用的是apache,在httpd.conf中你可以这样做:

LoadModule expires_module modules/mod_expires.so
ExpiresActive On
ExpiresDefault "access plus 300 seconds"
<Directory "/myProject/webResources">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    ExpiresByType image/gif "access plus 1 day"
    ExpiresByType image/jpg "access plus 1 day"
    ExpiresByType image/png "access plus 1 day"
    ExpiresByType application/x-shockwave-flash "access plus 1 day"
</Directory>

我昨天遇到了同样的问题…

  1. 确保在生成图像的操作中设置了正确的标题。
  2. 你必须添加memorize_headers与'Content-Type'的frontendOptions和性能也'Cache-Control'和任何头你想设置…

那么来自http://framework.zend.com/manual/en/zend.cache.frontends.html的Zend_Cache_Frontend_Page的例子应该是这样的:

$frontendOptions = array(
   'lifetime' => 7200,
   'debug_header' => true, // for debugging
   'regexps' => array(
       // cache the whole IndexController
       '^/$' => array('cache' => true),
       // cache the whole IndexController
       '^/index/' => array('cache' => true),
       // we don't cache the ArticleController...
       '^/article/' => array('cache' => false),
       // ... but we cache the "view" action of this ArticleController
       '^/article/view/' => array(
           'cache' => true,
           // and we cache even there are some variables in $_POST
           'cache_with_post_variables' => true,
           // but the cache will be dependent on the $_POST array
           'make_id_with_post_variables' => true
       )
   ),
    'memorize_headers' => array(
        'Content-Type',
        'Cache-Control',
        'Expires',
        'Pragma',
   )
);
$backendOptions = array(
    'cache_dir' => '/tmp/'
);
// getting a Zend_Cache_Frontend_Page object
$cache = Zend_Cache::factory('Page',
                             'File',
                             $frontendOptions,
                             $backendOptions);
$cache->start();