解决方法
yes when I press Ctrl+F5 it is loaded
然后它刚刚从浏览器缓存中提供.那很好.它在实际生产环境中节省了网络带宽.但我可以想象,这在开发过程中或者每当您将更新投入生产时都会令人不安.在开发过程中,我只是学会习惯按Ctrl F5键.但对于生产而言,你真的很想解决它,因为最终用户可能不会意识到这个“技巧”.
常见的方法是将版本号作为请求参数附加到CSS资源.
<link rel="stylesheet" href="style.css?v=1.0" />
每当您对CSS进行重大更改时,您都希望在将更新投入生产之前增加版本号.
<link rel="stylesheet" href="style.css?v=1.1" />
这将强制浏览器重新加载样式表.
另一种方法是使用服务器的启动时间.当您使用JSF时,可以使用在faces-config.xml中声明为应用程序范围的托管bean的java.util.Date
轻松完成.
<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>
然后你可以使用Date#getTime()
来获取时间戳:
<link rel="stylesheet" href="style.css?#{startup.time}" />
这将生成到HTML中,如:
<link rel="stylesheet" href="style.css?1314105929937" />
每次重新启动服务器或重新部署webapp时它都会改变,因此浏览器将被强制重新加载资源(即使它实际上没有被更改!请记住,如果需要缓存和带宽使用,请记住这一点).相同的技术适用于其他静态资源,如JavaScripts和图像.
当您已经使用JSF 2.x时,您可以使用内置的“资源库版本控制”功能.另见What is the JSF resource library for and how should it be used?