鏈接分享的簡單思考

鏈接分享可以說是一個非常常用的功能了,本次網頁鏈接分享做一些簡單的探索;

基本鏈接分享

最基本的鏈接分享功能很簡單,
場景:用戶通過發送鏈接給其他人分享當前頁面
解決方案:這種分享不涉及任何邏輯,直接複製瀏覽器地址欄中的鏈接即可;

帶跳轉功能的鏈接

  • 場景:有一個頁面很長,用戶滾輪滾了半天到了一個頁面的中部,希望將當前的頁面以及當前頁面的位置分享給其他人;

  • 分析在頁面中添加適當的錨點, 也就是在適當的位置爲 html標籤設置id,如下

    <p id="test"></p>
    

這樣就可以通過在鏈接默認添加 ‘#’+id作爲跳轉鏈接了
http://url.com#test

  • 解決方案:預先在頁面中設置好錨點,分享時在分享鏈接中加上’#’+id,這種也一般直接複製瀏覽器地址欄鏈接即可

帶頁面邏輯的鏈接分享

  • 場景:用戶打開了一個據由較爲複雜邏輯的頁面,進行一些如條件篩選,編輯等操作後,希望將編輯後的頁面分享給其他用戶
  • 分析:
    • 這個場景下,一般都需要有一個賬號密碼系統來保存用戶的操作結果,那麼就意味着,其他用戶無法訪問當前用戶的操作數據(否則用戶隱私還如何保障呢?)
    • 更爲複雜的是,用戶分享了頁面後,繼續進行其他操作,但是希望分享之後的操作不會影響之前分享的頁面
  • 思路:既然有了賬號系統,並且頁面的內容是隨着用戶的操作而改變的,那麼我們可以將鏈接分爲兩部分:頁面操作,在用戶分享頁面時,將當前的操作行爲記錄下來作爲參數添加到鏈接中,這樣其他用戶打開鏈接時,自動重複一遍該操作即可
  • 缺點:若頁面的操作行爲較爲複雜,鏈接參數會較多,導致鏈接較長,影響用戶體驗

帶頁面邏輯的短鏈接分享

  • 場景:既需要攜帶用戶操作行爲,又希望有一個較短的鏈接
  • 思路:
    • 可以先使用一個長鏈接,然後將該長連接存入數據庫,將數據庫key值作爲鏈接參數, 打開鏈接時通過數據庫Key值獲取真實的長鏈接
      http://url.com?key=123456
    • 也可以通過將用戶操作記錄下來,存入數據庫中,然後打開鏈接時使用key值獲取用戶操作記錄

    這裏提到的用戶操作記錄,本質上是頁面邏輯的參數

  • 注意:這裏記錄用戶操作時,不要使用遞增的數據庫記錄數,這樣會導致鏈接中的參數較爲有規律,容易導致信息泄露,簡單點的辦法是使用用戶操作記錄的信息生成hash值作爲key值
  • 拓展:這樣生成的鏈接還是較長的,如 www.baidu.com?key=12345678,可以再短一些嗎?答案是可以;我們生成的hash值,本質上就是一個10進制的數值,若我們將他轉爲更高進制的表示方式,那麼單個字符可以表示的數值就越大,對應生成的高進制hash值就越短,比如可以使用 0-9a-zA-Z作爲62進制編碼,將hash值轉爲一個更短的字符串

帶賬號驗證的鏈接分析

  • 場景: 用戶分享鏈接後需要密碼進行驗證,如百度網盤
  • 思路:基本思路和上面的 帶頁面邏輯的短鏈接分享一致,只是分享的鏈接先定向到一個公共的驗證頁面,然後這個驗證頁面依據參數跳轉到真實的頁面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章