3

嗨,我想检查网站的响应时间。这是我的代码,我得到了一些值,但没有显示现实。这些代码有什么问题。它与缓存有关吗?此外,如何显示页面是否不退出或不可用。

<script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript">
 var start = new Date();
 $.ajax ({
 url: 'http://www.example.com',
 complete : function()
 {
  alert(new Date() - start)
 },
        }); 
</script>
4

3 回答 3

5

假设代码与正在检查的代码在同一源上运行,则代码本身很好;除非两端(客户端和服务器)都支持并且正在使用CORS ,否则您不能使用 ajax cross-origin

它可能是缓存,是的,您必须参考浏览器工具(任何体面的浏览器在其开发人员工具中都有网络选项卡或类似选项)才能确定。您还可以通过cache: falseajax调用中设置来禁用缓存(有关详细信息,请参阅ajax文档),尽管这是一种综合的方法。更好的方法是确保您在此时间使用的任何 URL 都响应缓存标头,告诉浏览器(和代理)不要缓存它。

error您可以通过挂钩函数并查看它为您提供的信息来判断页面是否不存在或“不可用”(无论这意味着什么) :

var start = new Date();
$.ajax ({
    url: 'http://www.example.com',
    error : function(jqxhr, status, ex) {
        // Look at status here
    },
    complete : function()
    {
        alert(new Date() - start)
    },
}); 

给出的参数error也在上面链接的文档中进行了描述。

于 2012-12-10T12:26:25.847 回答
2

由于相同的原产地政策,您不能这样做。

一个技巧是创建一个图像并测量直到 onerror 事件触发的时间。

var start = new Date();

var img = new Image();

img.onerror = function() {
    alert(new Date() - start);
};

img.src = 'http://www.example.com/';

将随机数附加到 url 以防止缓存。

于 2012-12-10T12:29:12.133 回答
0

我会使用诸如 Firebug 或 Chrome 开发者工具之类的浏览器扩展来测量 Ajax 响应时间。

于 2012-12-10T12:40:27.810 回答