在 Yii 上缓存静态文件

Caching on Yii of static files

我在使用 Yii 时遇到了这个愚蠢的问题,我的本地开发人员缓存了 css 和 js 文件。当我尝试编辑文件时,它没有显示更改,但火确实被损坏并破坏了一切。这种情况会持续一段时间,然后自行修复。

我的 Yii 配置是这样的 assetManager:

$config['components']['assetManager']['forceCopy'] = true;
$config['components']['assetManager']['appendTimestamp'] = true;
$config['components']['assetManager']['linkAssets'] = true;

正如您在下面看到的,JS 文件在对鼠标悬停的其中一个字段进行小的颜色更改后结束。

当像所有其他资源一样包含它时,时间戳似乎没有附加到 JS 文件。

<script src="/custom/infobox.js?v=1427807792"></script>
<script src="/js/neighbourhoods-map.js"></script>
<script src="/js/search-block.js?v=1423510537"></script>

通过在视图文件中调用 registerJsFile() 包含该文件。

$this->registerJsFile('/js/neighbourhoods-map.js', [
    'depends' => ['\app\assets\MapsAsset'],
    'position' => View::POS_END]
);

我更改了上面的内容以包含时间戳,但问题仍然存在。

$this->registerJsFile('/js/neighbourhoods-map.js?v='.time(), [
    'depends' => ['\app\assets\MapsAsset'],
    'position' => View::POS_END]
);

处理起来太令人沮丧了。任何人都可以阐明这里的问题吗?

我在使用带有 nginx 的 Vagrant 时遇到了这个问题。

解决方案是从 nginx 配置中关闭 sendfile 指令。

sendfile  off;