Версионирование ресурсов

Устали от того, что когда вы развёртываете, ваш браузер кеширует старую версию ваших ресурсов? Вызвав enableVersioning(), каждое имя файла теперь будет включать хеш, который будет изменяться каждый раз, когда будет изменяться содержимое этого файла(например, app.123abc.js вместо app.js). Это позволяет вам использовать агрессивные стратегии кеширования (например, Expires в отдалённом будущем), потому что каждый раз, когда меняется файл, будет меняться его хеш, игнорируя любой существующий кеш:

1
2
3
4
5
6
7
// webpack.config.js
// ...

Encore
    .setOutputPath('public/build/')
    // ...
+     .enableVersioning()

Чтобы связать эти ресурсы, Encore создаёт файл manifest.json со ссылкой на эти новые имена файлов.

Загрузка ресурсов из файла manifest.json

Каждый раз, когда вы запускаете Encore, в вашем каталоге outputPath автоматически создаётся файл manifest.json:

1
2
3
4
{
    "build/app.js": "/build/app.123abc.js",
    "build/dashboard.css": "/build/dashboard.a4bf2d.css"
}

В вашем приложении вам нужно прочесть этот файл, чтобы динамически отображать правильные маршруты в ваших тегах script и link. Если вы используете Symfony, просто активируйте версионирование стратегии json_manifest_file:

1
2
3
4
5
6
# config/packages/framework.yaml
framework:
    # ...
    assets:
        # feature is supported in Symfony 3.3 and higher
        json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

Вот и всё! Просто не забудьте обернуть каждый путь в функцию Twig asset(), как обычно:

1
2
3
<script src="{{ asset('build/app.js') }}"></script>

<link href="{{ asset('build/dashboard.css') }}" rel="stylesheet" />

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.