да, когда я нажимаю Ctrl + F5, он загружается
Тогда он был подан из кеша браузера. Это прекрасно. Это экономит пропускную способность сети в реальной производственной среде. Но я могу представить, что это мешает во время разработки или когда вы вносите обновления в производство. Во время разработки я просто научился привыкать к клавише Ctrl + F5. Но для производства вы действительно хотели бы решить эту проблему, так как конечный пользователь может не знать об этой «уловке».
Общий подход заключается в добавлении номера версии в качестве параметра запроса к ресурсу CSS.
<link rel="stylesheet" href="style.css?v=1.0" />
Каждый раз, когда вы вносите серьезные изменения в CSS, вам нужно увеличивать номер версии, прежде чем запускать обновление в производство.
<link rel="stylesheet" href="style.css?v=1.1" />
Это заставит браузер перезагрузить таблицу стилей.
Другой подход - использовать для этого время запуска сервера. Поскольку вы используете JSF, это легко сделать с помощью java.util.Date
, объявленного как управляемый компонент приложения в 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>
Затем вы можете использовать Date#getTime()
, чтобы получить метку времени:
<link rel="stylesheet" href="style.css?#{startup.time}" />
Это будет сгенерировано в HTML как:
<link rel="stylesheet" href="style.css?1314105929937" />
Он будет меняться при каждом перезапуске сервера или повторном развертывании веб-приложения, поэтому браузер будет вынужден перезагружать ресурс (даже если он фактически не был изменен! Имейте это в виду, если кеширование и использование полосы пропускания представляет собой проблему ). Тот же метод применим к другим статическим ресурсам, таким как JavaScripts и изображения.
Если вы уже используете JSF 2.x, вы можете использовать для этого встроенную функцию «управления версиями библиотеки ресурсов». См. Также Для чего нужна библиотека ресурсов JSF и как ее использовать?