Гобеленовый крючок: начало рендеринга и конец рендеринга
Я пытаюсь использовать jamon для сбора статистики (время отображения веб-страницы) веб-сайта с использованием гобелена.
Как я могу продолжить иметь
- метод выполняется при получении запроса сервером, то есть начало рендеринга?
- метод, выполняемый, когда весь ответ отправлен, то есть конец рендеринга?
Я пытаюсь использовать @OnEvent
аннотации, но я не очень далеко с этим.
2 ответа
Вы могли бы создать RequestFilter
чтобы обернуть фактический рендеринг между вызовами в ваш собственный код:
public class RenderStatisticsFilter implements RequestFilter {
@Override
public boolean service(Request request, Response response,
RequestHandler handler) throws IOException {
this.beforeRender();
final boolean result = handler.service(request, response);
this.afterRender();
return result;
}
private void beforeRender() {
...
}
private void afterRender() {
...
}
}
Вы должны добавить свой фильтр в конвейер рендеринга через модуль приложения:
public void contributeRequestHandler(
final OrderedConfiguration<RequestFilter> configuration) {
configuration.add("RenderStatisticsFilter", new RenderStatisticsFilter());
}
Гобелен имеет расширяемые конвейеры, которые организуют логику для любого конкретного типа запроса. Я не уверен, пытаетесь ли вы измерить общее время обработки запроса или просто время, затрачиваемое на рендеринг (а в Tapestry фактически выполняется рендеринг DOM, а затем потоковая передача DOM клиенту). Конвейер HttpServletRequestHandler является хорошим местом для установки фильтра, который может измерять все время отклика для всех запросов (но не предоставляет хорошего способа выбора только запросов на рендеринг страницы), конвейер PageRenderRequestHandler хорош для измерения времени рендеринга и потоковой передачи. стр.