Php echo <script> 标签导致重要的性能延迟



我在我的windows 2008服务器上使用apache 2.2和php 5.3进行测试,使用Jmeter在10秒内测试300次点击。当一个极其简单的脚本出现巨大延迟时,我感到很惊讶

echo'
<script language="JavaScript" src="xx.js" type="text/javascript"></script>
<script language="JavaScript" ssrc="xx.js" type="text/javascript"></script>
<script language="JavaScript" src="xx.js" type="text/javascript"></script>
<script language="JavaScript" src="xx.js" type="text/javascript"></script>';

在那次测试之后,我将脚本标记更改为"script1"或其他任何东西(甚至是其他有效标记,如链接)

echo'<script1 language="JavaScript" src="xx.js" type="text/javascript"></script>
<script1 language="JavaScript" ssrc="xx.js" type="text/javascript"></script>
<script1 language="JavaScript" src="xx.js" type="text/javascript"></script>
<script1 language="JavaScript" src="xx.js" type="text/javascript"></script>';

脚本运行得很快

以下是jMeter的结果。我仍然不知道是什么原因导致了这种情况,也不知道如何改进

案例1正确使用标签,300个样本平均3218毫秒每分钟样本数:1262

案例2使用标签,300个样本平均116毫秒每分钟样本数:1783

编辑:在我在jmeter中的测试中,我只加载和请求一个php,而不是静态文件,jmeter没有理由尝试解析/下载jsvascript失败,它应该发送请求并保存响应,而不是其他。

如果是这种情况,jmeter将不加载所有包含的文件.ico、.css、images等,并有一个重要的延迟,但只有当php或apache在字符串中发现脚本标记时,才会发生这种情况,并进行额外的处理。我尝试了双引号和单引号以及heredoc来格式化包含脚本标记的字符串,但都是一样的。

现在,我用apache2.4和PHP5.4在wamp上运行了测试,问题得到了解决,jmeter同时解决了这两个脚本。因此,很明显,它与php或apache有关,可能是一个模块或扩展,在回显之前解析缓冲区,但仍然不知道是哪一个导致了

使用script标记时,jMeter将下载xx.js。这需要一些时间。当使用script1时,jMeter将看到一个不正确的标记,并忽略它(或执行未指定的操作)。在任何情况下,在这种情况下都不会下载xx.js,因此所需的时间更少。

最新更新