在Google云端硬盘上托管的网页中执行缓慢的jQuery脚本

时间:2014-01-05 09:22:38

标签: javascript jquery html google-drive-api

我为Physics JS构建了一个创作工具:

绝对:

https://googledrive.com/host/0B8yu2s4Q9YD8OG00WElPQllYTW8/Home.htm

该工具已通过鼠标悬停和鼠标输出实现了颜色交换 对图像按钮的影响。

代码:

$('input#b1').bind('mouseover', function() {
    $('input#b1').attr("src", "images/Begin_hover.png");
});
$('input#b1').bind('mouseout', function() {
    $('input#b1').attr("src", "images/Begin.png");

这在当地非常有效。但是,在Google云端硬盘上 需要一些时间。

解决方案是什么?

GitHub的:

https://github.com/MGTHEBOSS/absolutely

1 个答案:

答案 0 :(得分:0)

这对你的代码来说不是一个问题,就像你对图像的缓存(或缺乏图像)一样 -

  

缓存控制: private,max-age = 20

     

日期: Sun,05 Jan 2014 09:34:29 GMT

     

到期: Sun,05 Jan 2014 09:34:29 GMT

     

最后修改时间:星期六,2014年1月4日10:16:26 GMT

     

位置:/主机/ 0B8yu2s4Q9YD8OG00WElPQllYTW8 /图像/

     

服务器:GSE

     

状态: 304未修改

max-age属性以秒为单位,过期值告诉浏览器将其缓存。

因此,浏览器会在每次鼠标悬停和鼠标移动时进行“条件GET”,以查看图像是否已更改。对于我来说,在合理的固定线路连接上需要301ms - 移动网络的延迟会更高。

设置远期到期(绝对最小值为一小时)以避免重复获取图像的需要。

您使用的是哪个版本的jQuery?自jQuery 1.7以来,.on()一直是绑定事件的首选方法 - 您还可以通过将DOM元素存储为变量来避免重复查找,从而使代码更加高效。

var $beginButton = $('input#b1');

$beginButton.on('mouseover', function() {
    $(this).attr("src", "images/Begin_hover.png");
});
$beginButton.on('mouseout', function() {
    $(this).attr("src", "images/Begin.png");