V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sobigfish
V2EX  ›  JavaScript

能否用js ajax判断用户是否被墙,(js版的reachability)求解决方案

  •  
  •   sobigfish · 2012-02-07 18:15:15 +08:00 · 1687 次点击
    这是一个创建于 4677 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家浏览网站经常发现国外页面读到一半不读了吧,极有可能是在加载fb twitter的js造成的
    这样造成了非常不好的用户体验。所以我不翻墙的时候都用abp把两家的js过滤掉。

    我的想法是用js判断用户的网络能否加载fb twitter再决定是否添加相关的js

    但貌似js判断的只有连的通 或超时...
    怎么判断用户网络的加载平均时间,并用这个时间做为判断是否被墙的超时时间呢。
    6 条回复    1970-01-01 08:00:00 +08:00
    airyland
        1
    airyland  
       2012-02-07 18:43:29 +08:00
    sobigfish
        2
    sobigfish  
    OP
       2012-02-07 19:02:51 +08:00
    上面那贴还在说异步加载啊,我是主要想实现reachability的功能
    ayanamist
        3
    ayanamist  
       2012-02-07 23:05:39 +08:00
    如果只是要通过平均加载时间来判断,那所有js都用异步方式加载,然后在加载script前记录一个时间,加载成功后记录一个时间,比较时间差就可以得出延迟了。
    js不是万能的,大部分服务器端操作是无法用js来代替的。
    还有一个比较简单的办法是通过IP判断,返回一个值说明是不是国内IP。不过这也不是纯js方案
    sobigfish
        4
    sobigfish  
    OP
       2012-02-08 10:49:37 +08:00 via iPad
    @ayanamist node.js 除外呵呵,看来除非浏览器api/js引擎增加这方面支持,现在是不可能了
    benzhe
        5
    benzhe  
       2012-02-08 11:02:21 +08:00
    "怎么判断用户网络的加载平均时间,并用这个时间做为判断是否被墙的超时时间呢。"
    这个问题本来就不现实的,比如某地方网速很快,1秒对它来说就是超时了;而另一个地方网速很慢,20s才算超时,综合两种情况,“超时”究竟是超的哪个时?

    而“用js判断用户的网络能否加载fb twitter再决定是否添加相关的js ”,这个问题则用异步能非常完美地解决,所以没必要把简单问题复杂化哦。超时问题一般来说会用http状态代码判断,即异步方案
    sobigfish
        6
    sobigfish  
    OP
       2012-02-08 11:12:01 +08:00 via iPad
    @benzhe 我的意思就是加载本网站页面的时候判断啊,body首尾能行么,再将这个时间运算得到一个相对用户合适的超时时间。呃,我确实复杂化了,因为我贪心的想要个判断能否连通的类,不是一定用在fb的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 117ms · UTC 15:00 · PVG 23:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.