我正在研究JSF Web应用程序.每当我更改CSS文件并首次部署程序时,CSS文件中的更改都不会反映出来.我在不同情况下测试过它.这是怎么造成的,我该如何解决?
Bal*_*usC 14
是的,当我按下Ctrl + F5它被加载
然后它刚刚从浏览器缓存中提供.那很好.它在实际生产环境中节省了网络带宽.但我可以想象,这在开发期间或每当您将更新投入生产时都会令人不安.在开发过程中,我只是学会习惯按Ctrl + F5键.但对于生产而言,你真的很想解决它,因为最终用户可能不会意识到这个"技巧".
常见的方法是将版本号作为请求参数附加到CSS资源.
<link rel="stylesheet" href="style.css?v=1.0" />
Run Code Online (Sandbox Code Playgroud)
每当您对CSS进行重大更改时,您都希望在将更新投入生产之前增加版本号.
<link rel="stylesheet" href="style.css?v=1.1" />
Run Code Online (Sandbox Code Playgroud)
这将强制浏览器重新加载样式表.
另一种方法是使用服务器的启动时间.当您使用JSF时,可以使用java.util.Date声明为应用程序作用域的托管bean 轻松完成faces-config.xml.
<managed-bean>
<description>Startup date</description>
<managed-bean-name>startup</managed-bean-name>
<managed-bean-class>java.util.Date</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
然后你可以Date#getTime()用来获取时间戳:
<link rel="stylesheet" href="style.css?#{startup.time}" />
Run Code Online (Sandbox Code Playgroud)
这将生成HTML,如:
<link rel="stylesheet" href="style.css?1314105929937" />
Run Code Online (Sandbox Code Playgroud)
每次重新启动服务器或重新部署webapp时它都会改变,因此浏览器将被强制重新加载资源(即使它实际上没有被更改!请记住,如果需要缓存和带宽使用,请记住这一点).相同的技术适用于其他静态资源,如JavaScripts和图像.
如果您已经使用JSF 2.x,那么您可以使用内置的"资源库版本控制"功能.另请参见什么是JSF资源库以及如何使用它?
| 归档时间: |
|
| 查看次数: |
6711 次 |
| 最近记录: |