Posted by Victorlau | Posted in IT Sleepless | Posted on 05-Jan-2010
OpenX 是最受歡迎的Ad Server (廣告管理系統) 之一, 有著很大的用戶群. 曾經用OpenX 開發過幾個項目, 使用起來感覺還真的不錯. 使用Ad Server的好處是可以實現對網上廣告的集中管理, 不用由零開始, 自己鑽木取火造車輪, 簡單快捷方便, 而且最重要的一點, 效果好.
但之前用OpenX 時一直遇到一個問題, 就是當廣告數量大的時候, 面頁加載速度變得很慢, 這是因為OpenX 使用Javascript 來實現動態廣告的調用. 廣告數目越多, 同一個面頁的Javascript 調用自然越多, 而跟OpenX server的遠程連接數也就越來越多, 再加上每次調用都要生成一組隨機編號(也就是說要進行Random 運算), 這種情況下, 加載速度想快都難.
前段時間的一個項目對OpenX的使用量非常大, 廣告數目相當多, 逼著我一定要去找出個解決方法. 好在OpenX 不負其盛名, 由2.6版本開始, 就提供了一個很漂亮的解決方法 – Single Page Call.
Single Page Call 的原理很簡單, 就是把當前面頁里要加載的廣告集中起來, 再通過”一次性” 的調用來把這些廣告全部調回來, 顯示在相應的位置. 這樣無論廣告數目的多少, 都是只要一次調用就夠了, 也就是所謂的Single Page Call 的意思.
這里只是簡單講一下實現方法, 詳細步驟可以在參考連結里看到, 很清楚的, 這里就不一一重抄翻譯了:
1. 簡單情況 – 同一個廣告(banner)只會分配到一個版面(zone)上去:
這種情況很簡單, 不需要擔心同一個廣告在不同zone上會有沖突. 可以直接使用這篇教程里的例子: Blazing Fast Ads, Don’t Let OpenX Slow You Down , 這個方法會把整個網站上所有廣告全部一次性加載回來, 效能並不是最高的. 而且在下面的情況下會引起沖突而出錯.
2. 複雜情況 – 同一個廣告(banner) 可能被分配到不同的版面(zone)上去, 而且同一頁面里不同版面不可以重覆顯示:
這個情況就比較複雜, 不能直接用一兩句簡單的Javascript 來完成, 可以看一下這個官方教程: Single page call tutorial, 一步步跟著做就可以解決問題.
實現了Single Page Call 的廣告調用效能真的提升好多, 幾十個廣告都可以在1-2秒內加載完, 升幅很令我震驚. 可以說是一個十分值得使用的技術. 不過這里一定要罵一下OpenX那個說明, 在管理界面里生成Single Page Call 的代碼時, 教的是”簡單情況”下的方法, 但完全沒有提及到會有沖突的情況, 害我試了好幾天才找出問題來, 最後是用”複雜情況”的解決方案實現的.
Related posts:



