Изменения в файлах CSS не отображаются после развертывания - PullRequest
7 голосов
/ 23 августа 2011

Я работаю над веб-приложением JSF. Каждый раз, когда я изменяю CSS-файлы и впервые внедряю программу, изменения в CSS-файлах не отражаются. Я проверял это в разных ситуациях. Как это вызвано и как я могу решить это?

Ответы [ 2 ]

13 голосов
/ 23 августа 2011

да, когда я нажимаю 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 и как ее использовать?

0 голосов
/ 08 апреля 2013

У меня были те же проблемы при изменении файлов CSS, и мне нужно было обновить сайт, это было довольно неприятно и очень неудобно.

В конце концов я наткнулся на этот симпатичный маленький «инструмент», файл javascript, который вынужно внедрить в свой проект.Впоследствии вам больше не нужно обновлять сайт, вам просто нужно сохранить файл CSS, и изменения будут приняты автоматически через 2,3 секунды.

Вот ссылка: http://cssrefresh.frebsite.nl/

Кстати, очень полезный трюк от BalusC, как всегда;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...