MIP ACCESS細節剖析

什么是 MIP ACCESS

MIP ACCESS 由百度 MIP 團隊開發的一種頁面訪問權限控制機制,能夠允許網頁發布者在頁面元素中定義內容標記,并結合用戶訪問情況進行綜合評價,從而展現或隱藏頁面中內容,直至用戶登錄、訂閱或付費后才能夠查看隱藏內容的一種全新閱讀模式。

優勢在哪里?

  • 方式新穎:頁面中任何元素都能加入權限控制標記,并根據標記解析情況進行展示或隱藏,打破了傳統閱讀只展示前 n 字的模式。
  • 形式多樣:頁面內容可以是任何元素,包括純文本、圖片、視頻等。
  • 數據驅動:內容展現與否直接與發布者配置的數據相關聯,根據解析情況決定是否展示相應元素。
  • 配置靈活:發布者可以根據不同的需求配置不同接口,如數據請求接口、訪問記錄接口、登錄頁面、登出頁面等。

DEMO 演示

在說具體實現和細節之前,我們從完整 DEMO 里截取了四個片段,和大家一起認識 ACCESS 到底是一個怎樣的存在!

  • DEMO1 演示了 ACCESS 的基本功能,該案例提供了 1 篇首次點擊免費文章和 3 篇免費文章,首次點擊免費是指在第一次訪問該域名下具有 ACCESS 功能的頁面時免費查看的功能;如果訪問文章數目超過 4 篇時,頁面中部分內容將會隱藏,登錄后方可查看全部。

  • DEMO2 演示的是登錄功能,案例制定的策略是登錄后所有文章均免費查看。

  • DEMO3 演示了 ACCESS 登出功能,登出后恢復到原狀態,不可訪問的文章依然無法訪問,需登陸后方可獲得權限。

  • DEMO4 演示了重置數據的功能,重置會刪除后端記錄的數據,頁面刷新后恢復到第一次訪問的狀態。

名詞解釋

在講具體細節之前,大家先熟悉熟悉這些專有名詞吧!
- Access Runtime: MIP Access Javascript 運行環境。
- Access Content Markup: html 中以屬性形式定義的,規定訪問權限的標示。
- Authorization endpoint: 授權接口,返回 markup 解析所需要的數據。
- Pingback endpoint: 計量接口,存儲訪問相關信息。

使用方式

  • 開發者實現接口:所有接口的請求都依據 cors 方案,包括 Authorization 接口 (返回解析 DOM 元素展示與否的數據)、Pingback 接口,登陸登出接口。
  • 引入 mip 腳本。

    <script type="text/javascript" src="https://c.mipcdn.com/static/v1/mip.js"></script>
    <script type="text/javascript" src="https://c.mipcdn.com/static/v1/mip-access/mip-access.js"></script>
  • 定義 script 配置標簽,并配置以下信息。

    <script id="mip-access" type="application/json">
    {"authorization": "https://publisher.com/mip-access/api/mip-authorization.json?rid=READER_ID&url=CANONICAL_URL","pingback": "https://publisher.com/mip-access/api/mip-pingback?rid=READER_ID","login": "https://publisher.com/mip-access/login/?rid=READER_ID&url=CANONICAL_URL","authorizationFallbackResponse": {"error": true,"access": false}
    }
    </script>
    • authorization:授權接口,返回 MIP Access 表達式中需要進行計算的數據。
    • pingback:計量接口,每次訪問頁面之后,通過該 url 發送請求到開發者服務器,由其對數據進行管理,如每訪問一次計數減 1。
    • noPingback:是否允許計量。
    • login:登陸相關接口,可以是一個 map,如下:

      "login": {"login": "https://publisher.com/login.html?rid={READER_ID}","logout": "https://publisher.com/logout.html?rid={READER_ID}"
      }
    • authorizationFallbackResponse:如果 Authorization 接口請求失敗,需要在這里配置相關接口參數作為后備。

      "authorizationFallbackResponse": {"error": true,"access": false
      }
    • authorizationTimeout:Authorization 接口請求超時時間,默認為 3s。

  • 以 mip-access 屬性來書寫表達式。

    <div mip-access="access AND subscriber"></div>

實現細節


上圖為純前端方式實現 Access 的時序圖,下面就以這個引子來說一下 ACCESS 的工作流程吧!
- 用戶在訪問頁面時,第一時間從服務器下載到 html 文檔并展示在瀏覽器上,而不是先通過 ACCESS 機制處理后再進行展示,這樣做的目的為了讓用戶能夠第一時間看到頁面,縮短頁面展現的白屏時間。
- 在頁面加載完成之后(DOM Ready 階段),MIP Access 運行環境自動執行,并將頁面中以 mip-access-hide 屬性標記的所有 DOM 元素篩選出來并隱藏,同時根據開發者提供的 Authorization 接口發起請求(該請求地址由開發者在頁面指定的 script 中進行配置),接口的主要作用是拿到解析 mip-access 表達式的數據。
- Authorization 接口如果請求成功,篩選出頁面中使用 mip-access 屬性定義的元素,并根據 mip-access 中的表達式進行解析,解析結果為布爾值,如果結果為 true 則展示元素,否則隱藏;如果請求失敗,MIP 運行環境會尋找配置信息中的 authorizationFallbackResponse 字段,其值為一個 JSON 字符串,將該字符串進行 JSON 解析后作為解析 mip- access 表達式的數據;如果 authorizationFallbackResponse 未定義則解析失敗。
- 最后一步是待頁面加載完成后發起 Pingback 請求(該請求地址同樣是由開發者在頁面指定的 script 中進行配置),這一步的主要目的是記錄頁面訪問信息到開發者后端數據庫,并通過訪問信息決定下一個頁面的展示策略。如果開發者配置了 noPingback: true 的選項,則不會發起 Pingback 請求;否則發起請求并將數據傳遞給開發者服務器進行保存,待下次訪問文章時根據存儲的狀態返回相應的數據以決定頁面展示策略。

適用范圍

目前來說,純前端的 ACCESS 實現方案適用與一些不涉及用戶信息和收費業務相關的簡單頁面,通過該方式可以自由化的配置頁面中元素的展現方式;出于安全考慮和后續的需要,我們后續也會根據需求量來以前端 + server 的處理方式處理 html 文檔;

寫在最后

查看 mip-access 組件的 demo 請 點擊這里 。
有任何問題可以到?github issues?提問。

文章作者:Jackson
轉發自:itoss.me

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535849.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HDFS常用Shell命令

1、-ls: 顯示目錄信息 hadoop fs -ls /2、-mkdir&#xff1a;在HDFS上創建目錄 hadoop fs -mkdir -p /demo/test3、-moveFromLocal&#xff1a;從本地剪切粘貼到HDFS hadoop fs -moveFromLocal a.txt /demo/test/a.txt4、-appendToFile&#xff1a;追加一個文件到已經存在…

Linux環境下Flume的安裝

1、在官網http://flume.apache.org/download.html下載flume的壓縮包 2、解壓到指定位置并重命名 tar -zxvf apache-flume-1.9.0-bin.tar.gz3、配置環境并生效 #vi ~/.bashrc export FLUME_HOME/usr/local/APP/flume export PATH$PATH:$FLUME_HOME/bin #使變量設置生效 #sour…

MIPCache 域名升級

一、MIPCache URL 是什么 舉個例子&#xff0c;MIP 官網的 URL 為&#xff1a; https://www.mipengine.org 對應的 MIPCache 的 URL 為&#xff1a; https://mipcache.bdstatic.com/c/s/www.mipengine.org 所謂 MIPCache URL 是經過 MIP-Cache CDN 緩存后的 MIP 頁面地址&…

Flume監聽端口,輸出端口數據案例

1、在flume目錄下新建/myconf目錄,并在目錄下新建socket-console.conf 文件&#xff01; mkdir myconf cd myconf touch socket-console.conf2、編輯文件vim socket-console.conf&#xff0c;添加以下內容&#xff1a; # 定義這個agent中各組件的名字 a1.sources r1 a1.sink…

MIP 移動網頁加速器視頻教程全新發布

MIP (Mobile Instant Pages - 移動網頁加速器) 是百度推出的開源項目&#xff0c;用于移動端頁面加速。MIP 技術通過優化瀏覽器資源加載&#xff0c;前端代碼執行及 CDN 緩存加速來加速頁面&#xff0c;打造秒開的頁面瀏覽體驗。目前&#xff0c;有 5000 多家站點的 MIP 頁已經…

日常問題——flume連接hive時報錯Caused by: java.lang.NoSuchMethodError

問題描述&#xff1a; 今天新安裝的flume&#xff0c;使用flume來做kafka與hive對接時出現了以下兩個的錯誤&#xff1a; Caused by: org.apache.hive.hcatalog.streaming.ConnectionError: HiveEndPoint{metaStoreUrithrift://localhost:9083, databasedb, tablestudent, pa…

MIP 技術進展月報:儲存功能全新上線,MIP-Cache域名升級,校驗更嚴謹

集 * 瞬時觸達用戶、高轉化率、炫酷閃電標、優質展現形式 * 等諸多特性為一體的 MIP 頁面吸引了眾多站點進行改造。為了更好地服務于廣大站長&#xff0c;更快地傾聽站長們的聲音&#xff0c;MIP 技術團隊特推出《MIP 技術進展月報》&#xff0c;歡迎大家對 MIP 技術提建議&…

通過Flume簡單實現Kafka與Hive對接(Json格式)

將以下存儲在kafka的topic中的JSON格式字符串&#xff0c;對接存儲到Hive的表中 {"id":1,"name":"小李"} {"id":2,"name":"小張"} {"id":3,"name":"小劉"} {"id":4,&qu…

改造MIP獲得搜索青睞,輕松完成SEO

搜索引擎目標及頁面排序方法 搜索引擎作為互聯網流量的入口&#xff0c;承擔著流量分發的職責。但排序成千上萬的網頁&#xff0c;決定哪些網頁在第一頁&#xff0c;是由網頁本身的用戶體驗決定的。權重算法會從內容優質性&#xff0c;廣告多少&#xff0c;加載速度等多個角度…

日常問題———Attempting to operate on hdfs namenode as root

寫在最前注意&#xff1a; 1、master&#xff0c;slave都需要修改start-dfs.sh&#xff0c;stop-dfs.sh&#xff0c;start-yarn.sh&#xff0c;stop-yarn.sh四個文件 2、如果你的Hadoop是另外啟用其它用戶來啟動&#xff0c;記得將root改為對應用戶 HDFS格式化后啟動dfs出現以…

WebP 在減少圖片體積和流量上的效果如何?MIP技術實踐分享

作者 | Jackson 編輯 | 尾尾 不論是 PC 還是移動端&#xff0c;圖片一直占據著頁面流量的大頭&#xff0c;在圖片的大小和質量之間如何權衡&#xff0c;成為了長期困擾開發者們的問題。而 WebP 技術的出現&#xff0c;為解決該問題提供了好的方案。本文將為大家詳細介紹 WebP …

日常問題——pdsh localhost Connection refused

問題描述&#xff1a; 本地安裝hadoop單機模式的時候需要啟動namenode時報錯 pdshxxx: localhost: connect: Connection refused解決方案&#xff08;過程&#xff09;&#xff1a; 原因是pdsh默認采用的是rsh登錄&#xff0c;修改成ssh登錄即可&#xff0c;在環境變量/etc/…

MIP技術進展月報第2期: 數據綁定,異步腳本加速

一、 功能更新 1. mip-bind 上線&#xff0c;實現復雜交互 MIP bind 雙向綁定機制和組件上線&#xff0c;提供雙向綁定的特性&#xff1b;能夠允許頁面實現數據驅動功能&#xff0c;開發者可以在任意場景修改數據&#xff0c;并驅動頁面元素變動。 MIP 小姐姐畫外音&#xf…

Hadoop的安裝與配置——設置單節點群集

本篇博客將主要介紹如何設置和配置單節點Hadoop安裝&#xff0c;以便我們可以使用Hadoop 的MapReduce與HDFS快速執行簡單的操作。 零、先決條件 1、本系列以Ubuntu Linux作為開發和生產平臺 2、Linux所需的軟件包括&#xff1a; JAVA&#xff1a;必須安裝Java&#xff0c;配置…

MIP 腳本域名地址變更公告

尊敬的 MIP 開發者&#xff1a; MIP 團隊為了解決 MIP-Cache 頁面下 cookie 相互覆蓋問題&#xff0c;增強站點品牌露出&#xff0c;在 2017 年 8 月將 MIP 的腳本域名和 MIP-Cache 頁面域名進行了升級變更&#xff0c;詳見說明 MIP-Cache 域名升級。 在 12 月中旬&#xff0…

新手教程:不寫JS,在MIP頁中實現異步加載數據

從需求談起&#xff1a;在 MIP 頁中異步加載數據 MIP&#xff08;移動網頁加速器&#xff09; 的 加速原理 除了靠譜的 MIP-Cache CDN 加速外&#xff0c;最值得一提的就是組件系統。所有 JS 交互都需要使用 MIP 組件實現&#xff0c;保證頁面中所有 JS 都是最精簡高效的&…

日常問題———安裝新版zookeeper 出現Starting zookeeper ... FAILED TO START

問題描述 安裝新版zookeeper使用 /apache-zookeeper-3.6.1.tar.gz解壓后運行zoServer.sh文件時出現Starting zookeeper … FAILED TO START錯誤 解決方案&#xff08;過程&#xff09; 實際上應該是下載錯了文件。在官網上有兩個tar.gz文件&#xff0c;從3.5.5版本開始&…

Hadoop的安裝與配置——搭建完全分布式集群

一、搭建集群 1、準備服務器&#xff08;這里以我的3臺Centos7為例&#xff09; 1個主節點&#xff1a;Carlota1(192.168.33.21)&#xff0c;2個子節點&#xff1a;Carlota2(192.168.33.22)&#xff0c;Carlota3(192.168.33.23) 2、配置主節點名 在主節點命令行輸入&#x…

HTTP 視頻怎么在 MIP 頁面中使用?

在 MIP 中&#xff0c;一些資源的使用需要支持 HTTPS&#xff0c;視頻就是其中一種。但目前大部分站點的視頻資源都還是 HTTP 的資源&#xff0c;無法在百度 MIP 搜索結果中直接使用&#xff0c; mip-video 視頻組件針對 HTTP 的視頻資源采用跳到一個 HTTP 的播放頁面進行播放&…

MIP 組件庫升級公告

背景 為了方便廣大開發者們更好地使用組件&#xff0c;現對 MIP 組件庫統一進行升級&#xff0c;升級后將分為通用組件和自定義組件兩類&#xff0c;方便開發。 通用組件&#xff0c;即考慮了組件通用性方便所有開發者參考使用的組件&#xff0c;將存放于 mip-extensions 倉庫…