不同国家访问同一网站,从不同的服务器获取不同资源

🌙
手机阅读
本文目录结构

场景说明

这种情况还是有点蛋疼的,需要是不同地区访问同一个网站,这时候根据访问者的实际情况,去加载对应的资源(不同地区需要用的资源还不一样);

下面是两种常见的场景和解决方案

不同国家访问一个网站,加载相同资源

如果是不同国家,访问同一网站,想用相同的资源,那么可以使用阿里云的 CDN 服务来解决,地区选择全球加速,亲测效果还是很不错的!

使用这种方案,需要了解下 阿里云的CDN更新和预热机制,可以参考我的另一篇博文:阿里云 CDN 静态文件不回源更新的解决方法 这事我在这种情况的解决思路

不同国家访问域名,展现不同的网站

这种方案也好做,可以通过用户的语言环境来自动跳转到不同的网站;

比如我在搞一个网站:https://www.gopekka.com/

这个就是这种场景的,具体解决办法,可以参考我的博文:前端 JS 获取用户浏览器默认语言设置,自动判断跳转不同网站

当前场景的解决思路

这个类似前面两种的结合,适应中小型的网站,如果很大了,或者业务比较复杂,就不能这么干了,否则维护起来太蛋疼了 !

方法一:通过判断用户语言来解决

var language = localStorage.getItem('locale') || window.navigator.language.toLowerCase() || 'en';
var baseUrlVal = ''
localStorage.setItem('locale', language)
if (language.indexOf("zh-cn") !== -1) {
    baseUrlVal = 'https://xxxxx-public.oss-cn-hangzhou.aliyuncs.com/xxxx'
} else if (language.indexOf('en') !== -1) {
    baseUrlVal = 'https://xxxxx-public-gg.oss-us-west-1.aliyuncs.com/xxxx'
} else {
    baseUrlVal = 'https://xxxxx-public-hk.oss-cn-hongkong.aliyuncs.com/xxxx'
}

根据用户环境判断,会导致一个情况:中国大陆内的用户,设置英文为首选语言,那么访问网站会被移到对应的英文网站,这样的处理也是合理的,毕竟用户确实是想阅读英文网站的;

方法二:通过判断用户

可以通过获取用户的 IP,然后把 IP 放到 IP 库里查询所在地,从而加载对应的资源,这样的方案回更加准确!有的第三方会直接返回所在国家的编码,比如 cn / en 等就更好了

但是这样的方案也有一个弊端:如果用户通过科学上网,全局模式下,会被认为属于美国 / 日本等等(看梯子的 IP 而定了),那么会导致访问非常慢;但是这种偏差,很多翻墙的人都是了解的,没人会故意用美国的 IP 访问国内的淘宝 / 百度等网站的,除非是忘记切换回来了;

IP 判断

市场上有很多 IP 判断的,拿 IP 倒是非常好做的一件事;比如我现在可以拿到用户访问本网站时候的 IP;

如下:

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了