Yii2资产包:如何设置标题?

时间:2015-01-30 15:57:20

标签: caching http-headers assets yii2

我正在使用yii2的资产套装。但我没有找到影响每个文件的http标头(css和js)。例如,我想设置缓存。 对于控制器,我这样做:

'class' => 'yii\filters\HttpCache', 
            'only' => ['index', 'view'],
            'cacheControlHeader' => 'public, max-age=3600',
            'lastModified' => function ($action, $params) {
                $q = new \yii\db\Query();
                return $q->from('user')->max('updated_at');
            },

但是如何为资产/资产包做这件事?

3 个答案:

答案 0 :(得分:1)

你真的不能这样做。

您的CSS和JS文件由您的网络服务器提供(无论您使用哪一个)。资产和捆绑包是一种从Web服务器无法访问的文件夹(例如/assets/)中获取文件的机制,并将它们放入Web服务器可访问的文件夹中,如/web/assets/xxxxxxx,然后通过{{ {1}}。

文件直接提供,没有Yii的任何参与。因此,如果您需要特定的标头(用于缓存控制或任何其他原因),您的Web服务器配置就是应该完成的地方。

答案 1 :(得分:1)

将其放入.htaccess文件夹中的web/文件中,设置Expires标题以缓存JS,CSS,图像等。

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

答案 2 :(得分:0)

class PostController extends Controller
{
    public function behaviors()
    {
        return [
            [
                'class'      => 'yii\filters\PageCache',
                'only'       => ['view', 'short'],      // actions
                'duration'   => 60,
                'enabled'    => !YII_DEBUG,
                'variations' => [
                    HTTPS_ON,
                    $_SERVER['SERVER_NAME'],
                 ]
            ]
       ];
   }
  ...

或记录此网址https://www.yiiframework.com/doc/api/2.0/yii-filters-pagecache