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

2012-02-07 18:15:15 +08:00
 sobigfish
大家浏览网站经常发现国外页面读到一半不读了吧,极有可能是在加载fb twitter的js造成的
这样造成了非常不好的用户体验。所以我不翻墙的时候都用abp把两家的js过滤掉。

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

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

而“用js判断用户的网络能否加载fb twitter再决定是否添加相关的js ”,这个问题则用异步能非常完美地解决,所以没必要把简单问题复杂化哦。超时问题一般来说会用http状态代码判断,即异步方案
sobigfish
2012-02-08 11:12:01 +08:00
@benzhe 我的意思就是加载本网站页面的时候判断啊,body首尾能行么,再将这个时间运算得到一个相对用户合适的超时时间。呃,我确实复杂化了,因为我贪心的想要个判断能否连通的类,不是一定用在fb的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/26838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX