一直以来我们放在国外服务器上的网站在国内访问都很慢,当网站中包含有Google地图等内容的时候,更是在国内访问会被卡住,等待几十秒后才打开页面剩余部分,而地图部分也是空白。
去年在做ipshu.com网站的时候也是遇到这个问题,因为这个站本身就是判断IP地址的,所以也方便解决,当时记录了一篇博客《让国内国外都可以调用Google地图API》,采用的其中第二种办法。
但其它放在国外的网站依然没有解决,昨天干脆去编写了一个简单的Drupal模块in_china(放在本文的附件中),主要作用就是定义一个PHP函数in_china(),用于判断访问者IP地址是否属于中国大陆,如果属于返回True,反之返回False。
in_china模块一共4个文件:
- in_china.info :模块定义文件
- in_china.module :函数in_china()定义文件
- in_china_IP-COUNTRY.BIN :IP库文件
- in_china_IP2Location.php :读取IP库中内容的文件
在Drupal网站中放置该模块文件、开启该模块,就可以用in_china()这个定义的PHP函数了,在node--xxx.tpl.php显示模板中进行下面的修改:
... if (in_china()) { $google_map_url = '//ditu.google.cn/maps/api/js?sensor=false&language=zh-CN'; } else { $google_map_url = '//maps.google.com/maps/api/js?sensor=false'; } ... ... <script type='text/javascript' src='$google_map_url'></script> ...
也就是根据访问者是否在国内来修改使用不同的google api地址,国内用ditu.google.cn的。实际使用效果达到预期,以后还可以对IP库、读取程序进行优化,提高性能。
非Drupal系统的其它PHP程序其实也一样可以用这个函数,下载附件、解压后打开就可以看到源代码,根据自己的需要来复制到自己的程序中进行调用就可以。
附件 | 大小 |
---|---|
Drupal模块in_china (1.05 MB) | 1.05 MB |
评论3
祁总真是一个善于钻研的人!
祁总真是一个善于钻研的人!而且还很乐于分享
而且还很乐于分享力所能及的分享
谢谢过奖,本来我就一直在用开源软件,是分享的直接受益者,能做点点贡献就很高兴了。只是这个程序比较简单、需求可能也不多,就不到drupal官方网站上去单独添加一个第三方扩展程序了,直接放在我的博客中。