WedX - журнал о программировании и компьютерных науках

Scala Play Версия для отпечатков пальцев общедоступных активов

Я успешно настроил отпечатки пальцев scala (play framework) для наших общедоступных ресурсов, выполнив следующие действия:

plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")

build.sbt

pipelineStages := Seq(digest, gzip) // added digest

маршруты

Setup relevant route for public /*files

Это создаст что-то вроде следующего в исходном коде страницы:

/stylesheets/730252eec90cb8dab9c4a8a5ee7277ac-styles.min.css"

Мой вопрос в том, как этот хэш MD5 изменится в будущем. Зависит ли это от «Версии» в build.sbt? Или он будет автоматически обновляться при каждом повторном развертывании?

version := "1.0-SNAPSHOT" // Do I need to change this each time i redeploy?

  • Я думаю, что хэш генерируется с использованием исходного содержимого файла, поэтому хэш изменится только при изменении исходного файла. 24.03.2015

Ответы:


1

В то время как плагин sbt-digest имеет много встроенных очень умных вещей для обнаружения изменений, если мы посмотрим на источник sbt-digest, мы можем видеть, что он на самом деле зависит от вспомогательный класс Ivy для выполнения вычисления дайджеста, и этот помощник использует только содержимое каждого File для вычисления дайджеста.

Это означает, что пока содержимое данного актива остается неизменным (а также ваш алгоритм дайджеста, например md5), вы можете перемещать его в своей файловой системе и/или пути URI, и он по-прежнему будет иметь тот же " имя файла" - хорошее свойство.

Так что, если вы решите ввести новый подкаталог main в stylesheets, ваш HTML будет из:

/stylesheets/730252eec90cb8dab9c4a8a5ee7277ac-styles.min.css

to

/stylesheets/main/730252eec90cb8dab9c4a8a5ee7277ac-styles.min.css
23.03.2015
  • Большое спасибо за ваш ответ. Итак, чтобы уточнить, если при следующем развертывании styles.min.css будет другой контент (например, я добавил новый css в файл), то хеш MD5 автоматически изменится? 24.03.2015
  • Ага. Я предполагаю, что технически возможно, чтобы новый файл действительно имел то же значение, что и старый, но я думаю, что мы можем исключить это для практических целей ;-) 24.03.2015
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]