7cef06f981
Benchmark should be disabled if the response is not HTML. This is most likely the case when the layout is disabled. If Web 2 or Zend sends JSON for example, the layout is disabled. The follwing code inside an action disables the layout (and view): $this->_helper->layout()->disableLayout(); The following code inside an action disables the action's view script: $this->_helper->viewRenderer->setNoRender(true); Note that an action's view script is also disabled via setNoRender() when rendering another view script via render() or renderScript(). Another appraoch is to check the content-type. If explicitly set to not HTML, disable benchmark: $renderBenchmark = true; $response = $this->getResponse(); $headers = $response->getHeaders(); foreach ($headers as $header) { if (strtolower($header['name']) === 'content-type' && stristr($header['value'], 'text/html') === false ) { $renderBenchmark = false; break; } } if ($renderBenchmark) { $layout->benchmark = $this->renderBenchmark(); } Maybe we should also provide a action method for disabling benchmark, regardless of the user's setting. refs #10856 |
||
---|---|---|
.. | ||
ActionController.php | ||
AuthBackendController.php | ||
BasePreferenceController.php | ||
ControllerTabCollector.php | ||
Dispatcher.php | ||
ModuleActionController.php |