Почему фреймворк 2.4 работает так медленно при использовании @rout.Assets.versioned в twirl?

У меня есть контроллер, когда я отрисовываю шаблон вращения и возвращаю его в своем действии. производительность воспроизведения снижается примерно в 5 раз (15000 запросов в секунду в тесте Apache). но когда я возвращаю json в этом действии, производительность игры возрастает примерно в 5 раз (79000 запросов в секунду в тесте apache). У меня есть очень простой шаблон twirl:

@(message: String)

@main("Welcome to Play") {

    @message

}

Обновление: я обнаружил, что, когда я использую @rout.Assets.versioned вместо @rout.Assets.at для адресации активов, эта проблема возникает.

    <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("stylesheets/main.css")">
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">
    <script src="@routes.Assets.versioned("javascripts/hello.js")" type="text/javascript"></script>

1 ответ

Всегда будет разница между действием, возвращающим необработанные данные, и действиями, которые должны анализировать и визуализировать некоторые представления представлений Twirl, дополнительно versioned актив проверяет каждый файл, поэтому он добавляет дополнительные задания для всего процесса.

Сравните производительность двух просмотров Twirl, одного с versioned Используется другой метод с ручным добавлением строки, и подумайте, как можно оптимизировать ваши представления.

Также рассмотрите возможность кэширования результатов, где это возможно, это наверняка ускорит процесс.

Другие вопросы по тегам