queryString在这个样式表的href中做了什么?

jus*_*eve 13 css

浏览http://html5boilerplate.com/上的样板代码我对此用法感到困惑:

<link rel="stylesheet" href="css/style.css?v=1">
Run Code Online (Sandbox Code Playgroud)

Sim*_*mon 11

如果已在浏览器缓存中,则强制更新.v可能是版本的缩写.


ale*_*lex 7

扩展Simon的正确答案 ......

通常为了节省带宽,样式表(以及其他站点资产)向浏览器发送标题,表示它们应该从现在(通常是一年)过期很长时间.他们还发送304未修改的头.

这很好,但如果有人想要更新样式表怎么办?如果它被请求style.css,并且随后的请求是style.css,最终用户将永远不会重新下载它(无论如何不是一年).

要解决此问题,您可以附加在文件执行时更改的查询字符串.例如,它可以在PHP中轻松完成

<?php
    $file = 'style.css';
?>

<style type="text/css" rel="stylesheet" href="<?php echo $file . '?v=' . filemtime($file); ?>" />
Run Code Online (Sandbox Code Playgroud)

现在,当文件更新时,查询字符串会更改,文件将重新加载到所有最终用户.在(a)到期时间结束或(b)查询字符串再次更改之前,不会再次下载.