2012年3月5日 星期一

A 站台的條列頁+內容頁,從 B站台取得.

需求: 假設 A站台(客戶網站), 與 B站台(可能是外部網站,或客戶的其他子網站)使用相同的架構. 現在 A 站的 99號節點,要顯示 B站台 33號節點內容. 很像是成語 "移花接木" 的感覺.

解法1: B 站台的資料, 倒進 A 站台.
說明:
1.讓 B站台提供 RSS,
2.在 A站台設排程讀取 B站台 RSS內容進 A站台 database 中.


解法2: A站台直接讀取 B站台 topic list 的資料.
說明:
1.在 A站台的節點(或主題單元) xml 設定檔設定 ExtraListUrl(條列頁) + ExtraDataUrl(內容頁) tag, 把 value 設定為 B站台的 topic list 資料.
2.修改 A站台的的 topic list 程式, 在輸出 topic list 先讀取看看 ExtraListUrl 有值的話, 就讀取 ExtraListUrl 裡設定的 URL 裡的值, 直接輸出.
3.修改 A站台的的 article 程式, 在輸出 article 先讀取看看 ExtraDataUrl 有值的話, 就讀取 ExtraDataUrl 裡設定的 URL 裡的值, 直接輸出.
4.調整要輸出的 block 裡的參數, 要把 B站台的識別用的參數(例如節點), 換成 A站台目前正被執行中的參數.


心得, 如果頁面在輸出時, 是套用 XML 來產生的話, 不同區塊的 block 可能可以直接與其他系統(ap)做共用, 但是這個架構有一個很大的缺點, 就是無法做 page 在 buffer 狀態下的 flush, 一定必須跑完所有的 block 所有的 code 之後, client 端的 browser才看的到畫面.

例如: 傳統的程式架構, 假設您輸出的 html 不是透過 table tag 輸出的情況下, 假設您有10個 block, 每一個 block 的處理時間需要1秒, 每一個 block 的 html 傳輸到 client 端的 browser , browser 可以直接顯示接收到部分的block, 意思是說 browser 可以每秒顯示出一個 block. 反之如果是用 xml + xsl 的架構, browser 只能在10秒後, 一次把10個block 顯示出來.

沒有留言:

張貼留言

Facebook 留言板