在项目开发中,都会遇到浏览器打开网页时对 JS、CSS 文件进行了缓存,导致 JS、CSS 文件在服务器修改后,浏览器会从本地缓存中获取,修改的内容无法显示。这时候就可以使用版本号来解决,让浏览器检测到版本号变化不使用缓存文件。
一般情况下,只要在引用文件加?+版本号,像这样就可以了:
<link rel="stylesheet" href="/css/index.css?v1.01" />
但有个问题就是,项目稍微大点,js,css文件就会很多,不可能每次发布都一个个文件去改版本号,因此可以统一进行管理,已symfony为例:
symfony使用的是twig模板引擎,首先可以对twig设置一个全局的版本变量,
一、可以使用addGlobal:
$templating->addGlobal('version', 'UA-xxxxx-x');
在模板中:
<p>The version is: <?php echo $version ?></p>
二、在配置文件中配置[http://symfonychina.com/doc/current/templating/global_variables.html]
# app/config/config.yml
twig:
# ...
globals:
version: UA-xxxxx-x
使用:
<p>The version is: {{ version }}</p>
三、使用服务容器参数 symfony文档
你也可以利用内置的服务参数系统,他可以让你独立和重用这个值,以yml为例:
# app/config/parameters.yml
parameters:
version: v1.0.0
# app/config/config.yml
twig:
globals:
version: '%version%'
除了symfony外,其他的也有,比如
- 通过服务器获取文件最后的修改时间,把他当做版本号;
- 使用gruntjs生成版本号
- 。。。。
不管咋整,重点就是不让浏览器从缓存中读取