Подтвердить что ты не робот

Рабочие пространства Chrome с отпечатками пальцев

Рабочие пространства Chrome: скажем, я сопоставляю локальные файлы CSS с файлами, обслуживаемыми моим локальным http-сервером. Все отлично работает, и я могу модифицировать файлы в браузере, а при обновлении страницы мои изменения сохраняются.

Нам удастся отпечатать наши активы, чтобы на них ссылались через URL-адреса, например styles.css?longuniquehash. Отличная практика - таким образом мы можем использовать агрессивное кэширование и убедиться, что самые последние активы будут использованы клиентом.

Тем не менее, это немного тормозит с рабочими пространствами, поскольку сопоставления теряются всякий раз, когда URL обновляется. В двух словах: мы сопоставляем styles.css?123 с локальным ресурсом, меняем его и обновляем на странице, он возвращается как styles.css?234, который должен отображаться снова.

Мы используем cassette, но проблему можно воспроизвести на любой установке с помощью отпечатка пальца. Есть ли параметр или обходной путь, который мне не хватает?

4b9b3361

Ответ 1

Согласно Chromium, поддержка сопоставления URL-адресов с параметрами запроса (т.е. style.css?123) была только частичной вплоть до Chrome 49, где она была полностью удалена.

Если вы не можете вручную удалить параметры из своего кода, временным обходным решением является удаление параметра ?123 из ссылки на таблицу стилей в инспекторе Chrome после загрузки страницы. Тогда ваше отображение рабочей области и автоматическое обновление должны работать нормально, пока вы не загрузите страницу еще раз.

Вы можете сыграть здесь и следовать этой проблеме: bugs.chromium.org

Ответ 2

Я предполагаю, что вы не работаете на своем реальном сервере (и если вы остановитесь и развернетесь на своем локальном компьютере или, по крайней мере, на тестовом сервере), то вы активируете "кеш-биттер" только в своей живой среде. У нас всегда есть быстрый способ проверки среды, на которой мы работаем, на всех наших проектах, поэтому просто проверьте перед добавлением запроса "? 123". Я не делаю, что решить это в коде, вы также можете добавить это в свои htacces (если вы используете apache)

SetEnvIf Host 'local.domain.com' runenv=local

RewriteCond %{ENV:runenv} ^local$
RewriteCond %{REQUEST_URI} .*\.css
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^(.*)$ /$1? [R=301,L]