一直以來我們放在國外服務器上的網站在國内訪問都很慢,當網站中包含有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官方網站上去單獨添加一個第三方擴展程序了,直接放在我的博客中。