在控制器完成渲染之前发送头

时间:2018-01-22 10:11:53

标签: html optimization zend-framework httpresponse

如何在控制器完成之前发送<head>内容?我们的想法是尽快开始加载CSS(不要等待控制器操作)。

示例场景:

// in the controller
sleep(5);

这给出了:

空白页5秒 - &gt;显示head - &gt;开始加载CSS - &gt; body

我想要的流程是:

发送head - &gt;开始加载CSS - &gt;等待控制器 - &gt;发送页面的其余部分(正文)

<head>现在位于layout.phtml,后面包含索引控制器脚本(index.phtml)。

也许我可以将<head>作为一个部分并在整个布局之前以某种方式发送它?

1 个答案:

答案 0 :(得分:1)

一种方法是创建一个所有控制器都扩展的抽象控制器,并在<script type="text/javascript"> $(function () { $('[id*=dropDownKved]').multiselect({ includeSelectAllOption: false, numberDisplayed: 1, buttonWidth: '100%', onChange: function (element, checked) { var brands = $('[id*=dropDownKved]'); var selected = []; $(brands).each(function (index, brand) { selected.push([$(this).val()]); }); console.log(selected); } }); }); </script> 函数中渲染头模板并刷新:

onDispatch

这种方法的缺点:

理论上,您可以使用此方法在headScript echo之前加载布局中的所有静态内容 - 例如徽标,导航,搜索栏等。

正如我所说,这打破了重定向,这意味着帮助者和插件PostRedirectGet将无效。