我正在使用jquery中的webapp,在没有太多资源的旧机器或机器上,可能表现不佳。为了解决这个问题,我想制作一个降级版本,禁用某些功能,特别是那些依赖大图像的功能。
我怎么知道我的应用程序在jquery或javascript中的用户计算机上是否运行不佳?我只需要一种方法来调用一个会降低应用程序性能的函数。 (特别是当用户可能在系统内存不足时)
我能想到的唯一方法是手动用户干预,但该选项会为不需要它的用户增加混乱,并且需要它的用户可能不会注意到它。
谢谢!
答案 0 :(得分:5)
在javascript开始运行之前无法判断。您可以像这样分散一些分析Date对象:
var timeTaken;
var start = +new Date(); // cast right now to a number
for (i = 0; i < 1000000000; i++) // Some seriously intensive loop
{
// ...
}
timeTaken = (+new Date()) - start; // calculate the total time taken
if (timeTaken > 500) // if time taken is longer than 500ms
switchToBasic();
您应该记住,还有其他因素会影响浏览器的性能。如果用户已经在进行一些密集的CPU操作,这可能会导致他们的机器切换到基本模式,即使他们拥有相当强大的计算机。
答案 1 :(得分:1)
如果您确实需要确定它适用于低端计算机(并且周围没有任何旧计算机),为什么不尝试使用VirtualBox等虚拟机。通过在虚拟机中运行一个操作系统,可能会自动减慢速度,从而模拟较慢的硬件。我很确定大多数虚拟机都允许你调整虚拟CPU的速度......
至于自动检测客户端何时是慢速计算机,我不确定您是否可以可靠地检测到这一点,而不添加进一步减慢计算机速度的测试。
我建议你先创建一个允许用户切换“慢速计算机模式”的链接。这样,使用慢速计算机的患者可以坐下来等待很多,以便在他们想要时获得奇特的功能,或者如果他们不耐烦则可以将其关闭。这更容易实现,您可能会发现测试人员/用户实际上对该解决方案感到满意......:)
如果您决定进行一些自动检测,请同时进行手动覆盖,因为自动检测失败而无法更改它,因此提供虚拟数据非常烦人。
答案 2 :(得分:0)
你能编写一个运行受控测试的javascript函数,对结果进行计时,然后将其作为降级网站的基础吗?
可能是SunSpider中某个测试的较小版本,例如
答案 3 :(得分:0)
与其他人一样,运行受控计算测试并测量他们花费的时间。但是,不要只做一次,而是做一些简短的测试。如果它甚至在一个时间内发生,你得到一个快速的结果,你知道你有一台快速的机器。
快速机器可能已被其他任务淹没,但慢速机器暂时不会突然变快。
根据您的应用程序,您还可以向用户添加提示,以便找到更快的浏览器。使用JIT编译Javascript的浏览器速度要快得多。
答案 4 :(得分:0)
答案 5 :(得分:0)
Gmail会显示一个加载栏,其中包含“切换到仅限HTML”链接。你可以沿着那些方向尝试一些东西。 (另外,如果加载需要很长时间,“切换到仅HTML”链接会变得更加突出。它会弹出到屏幕中间。)
答案 6 :(得分:0)
您可以设置计时器以显示允许用户切换到基本模式的对话框。 showSlowDialog不会停止慢速操作的过程,因为它在另一个线程中运行(并发运行)。
function showSlowDialog() {
if(confirm("switch to slow?")) {
switchToSlow();
}
}
var timer = setTimeout("showSlowDialog()", 5000); // show dialog in 5 seconds
SomeSlowishOperationThatMayOrMayNotTakeSomeTime(); // do long operation
clearTimeout(timer); // clear timer.