我正在使用 yii2 的 Assets 包。但我没有找到影响每个文件(css 和 js)的 http header 的方法。例如我想设置缓存。 对于 Controller ,我这样做:
'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');
},
但是如何为 Assets / Assets 包做到这一点?
最佳答案
你真的不能那样做。
您的 CSS 和 JS 文件由您的网络服务器(无论您使用哪个)提供服务。 Assets 和 bundle 是一种机制,它从 Web 服务器无法访问的文件夹(例如 /assets/
)中获取文件,并将它们放入 Web 服务器可访问的文件夹中,例如 /web/assets/xxxxxxx
,然后通过 http://<your_domain>/assets/xxxxxxx
可见.
这些文件是直接提供的,没有 Yii 的任何参与。因此,如果您需要特定的 header (用于缓存控制或任何其他原因),您的 Web 服务器配置就是应该完成的地方。
关于caching - Yii2 Assets 包 : How to set headers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239762/