2010-07-11 46 views
9

不久,我將需要構建一個小部件,我們的一些客戶可以嵌入到他們自己的網站中。JSONP vs IFrame?

未來證明我的窗口小部件嵌入代碼會是這樣的:

<script type="text/javascript" src="path/to/remote/file.js"></script> 
<div id="my_widget"></div> 

什麼是I幀VS JSONP的優勢和劣勢?

是否有任何常見的基於搜索引擎優化的iframes問題?

回答

9

首先,iframes和jsonp不是互斥的:一個是渲染的意思,另一個是溝通的意思。

您的選擇是在文檔包含(即在主DOM內創建小部件)或in-iframe包含(即具有用於小部件的新的單獨DOM)之間。

iframe的優勢在於沙箱:您的小部件與主機的javascript和css之間沒有衝突。這意味着你可以放心:您希望JavaScript庫

  • 使用簡單的HTML代碼放在一起簡單的CSS規則(這是維護一個明確的獎金)
  • 對於

    • 使用/定義任何缺點:

      • 一個iframe是重量級的,並可能嚴重放緩主機頁面渲染
      • 的iframe也會利弊更多的內存和資源,這可能是一個問題,如果主頁是針對手機

      因此,如果合理假設使用您的小部件的人會願意「適應」他們的網頁,採取文件內的方式。如果不是,請使用iframe但瞭解限制。

      至於SEO問題,只要您動態創建窗口小部件(無論是在文檔中還是在iframe中),搜索引擎都不會看到它。我不知道如果這是你想要的,但是這是你會得到什麼;)

    +0

    至於性能也越高,一個iframe不一定提供比任何JSONP更多的負載開銷(事實上,許多提供更小的開銷)。 iframe可以異步加載,而JSONp驅動的小部件可能需要頁面完全加載,然後添加對外部資源的引用,從而擴大頁面加載。 – mattbasta 2010-07-12 01:04:00

    +4

    我與很多廣告提供商合作過,我可以向你保證,涉及iframe的解決方案是性能殺手。加載小部件的時間(例如,如果它需要文檔準備就緒)以及主機頁呈現並可用的時間有所不同。如果你對JSONP的暗示是真實的,那麼沒有人會建議將動態腳本加載作爲快速頁面呈現的解決方案。 – 2010-07-12 01:14:31

    1

    繼承人從跨域腳本演示一些幻燈片亞歷克斯·塞克斯頓

    http://www.slideshare.net/SlexAxton/breaking-the-cross-domain-barrier

    不幸的是它只是幻燈片等是缺少相應的解釋,但可能有幫助

    +0

    這是相同的屏幕模型。必須注意任何人在進行這種任務。 http://alexsexton.com/?p=168 – 2011-06-07 10:33:16

    +0

    從本演示文稿可以看出,如果你現在在做跨瀏覽器的東西,而不是使用像EasyXDM這樣的庫,那麼你做錯了。您正在編寫您不需要編寫的代碼,而且您可能沒有做到正確,並且您可能錯過了規範中的更改。這些庫將隨時更新,並針對您的用戶使用的任何瀏覽器使用適當的和/或最佳的方法。 – 2011-07-20 05:36:59

    +0

    很高興在回答中看到演示文稿中的一些材料 – Crowie 2014-03-05 16:04:18

    0

    如果您正在進行API調用並僅獲取數據,那麼JSONP將帶來更好的性能。如果你正在渲染東西,那麼你必須使用iframe。如果你想阻止主機站點訪問你的widget數據,iframes是要走的路。但是,如果你的數據是公開的,那麼JSONP將導致更簡單的實現(因爲iframes意味着你需要處理調整大小)。另一方面,iframe提供了很好的CSS沙盒,所以你不會與主頁的CSS相沖突。

    0

    我選擇了使用JSONP。你可以看到我在這裏實現的細節: if I allow partner sites to republish my RSS feed, will that boost my SEO ranking?

    有些人對SEO給出了自己的看法。但是,我仍然不確定它是否有助於搜索引擎優化。我只是有一個想法來測試它,但我現在要實現它!我將僅使用呈現窗口小部件的JavaScript創建一個頁面(在這種情況下爲feed)。然後,我將使用Google的網站管理員工具來查看Google是否挑選了Feed內容中的任何關鍵字。獲得結果後,我會將答案發布到上面的鏈接。

    祝福我們最好!

    馬特