部署后不会反映CSS文件中的更改

前端之家收集整理的这篇文章主要介绍了部署后不会反映CSS文件中的更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究JSF Web应用程序.每当我第一次更改CSS文件并部署程序时,CSS文件中的更改都不会反映出来.我在不同情况下测试了它.这是怎么造成的,如何解决

解决方法

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?

猜你在找的CSS相关文章