Я хотел бы реализовать Subresource Integrity и кэширование для статических активов, таких как таблицы стилей и файлы JavaScript в моем приложении. В настоящее время я использую PHP с шаблонами Twig.Недостатки целостности и методы кэширования ошибок в PHP
Я знаю, что существует множество инструментов для генерации хэшей для всех файлов JS и CSS, но я ищу, как реализовать хэши в тегах и <link>
для сотен файлов.
This blog post описал большую часть того, что я пытаюсь сделать, однако автор использует только кэширование и использует статическую метку времени в имени файла, которую он меняет вручную каждый раз. Использование инструмента построения для программной генерации этой временной метки не является трудным, но с SRI это значение является хешем, который равен различным для каждого файла.
Например, фрагмент header.html.twig
:
<!-- cdn requests -->
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'
integrity='sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx'
crossorigin='anonymous'></script>
<!-- same-origin requests -->
<script src='foo.1a516fba.min.js'
integrity='sha384-GlFvui4Sp4wfY6+P13kcTmnzUjsV78g61ejffDbQ1QMyqL3lVzFZhGqawasU4Vg+'></script>
<script src='bar.faf315f3.min.js'
integrity='sha384-+vMV8w6Qc43sECfhc+5+vUA7Sg4NtwVr1J8+LNNROMdHS5tXrqGWSSebmORC6O86'></script>
Изменение атрибутов src
/href
и integrity
каждый раз, когда это не разумный подход.
Я мог бы написать функцию Twig, которая вызывает функцию PHP для хэширования файла каждый раз, и он может работать на OK на dev, но это кажется ужасно дорогостоящим.
Что такое приемлемый подход к этому вопросу?