鏈接分享可以說是一個非常常用的功能了,本次網頁鏈接分享做一些簡單的探索;
基本鏈接分享
最基本的鏈接分享功能很簡單,
場景:用戶通過發送鏈接給其他人分享當前頁面
解決方案:這種分享不涉及任何邏輯,直接複製瀏覽器地址欄中的鏈接即可;
帶跳轉功能的鏈接
-
場景:有一個頁面很長,用戶滾輪滾了半天到了一個頁面的中部,希望將當前的頁面以及當前頁面的位置分享給其他人;
-
分析在頁面中添加適當的錨點, 也就是在適當的位置爲 html標籤設置id,如下
<p id="test"></p>
這樣就可以通過在鏈接默認添加 ‘#’+id作爲跳轉鏈接了
http://url.com#test
- 解決方案:預先在頁面中設置好錨點,分享時在分享鏈接中加上’#’+id,這種也一般直接複製瀏覽器地址欄鏈接即可
帶頁面邏輯的鏈接分享
- 場景:用戶打開了一個據由較爲複雜邏輯的頁面,進行一些如條件篩選,編輯等操作後,希望將編輯後的頁面分享給其他用戶
- 分析:
- 這個場景下,一般都需要有一個賬號密碼系統來保存用戶的操作結果,那麼就意味着,其他用戶無法訪問當前用戶的操作數據(否則用戶隱私還如何保障呢?)
- 更爲複雜的是,用戶分享了頁面後,繼續進行其他操作,但是希望分享之後的操作不會影響之前分享的頁面
- 思路:既然有了賬號系統,並且頁面的內容是隨着用戶的操作而改變的,那麼我們可以將鏈接分爲兩部分:頁面和操作,在用戶分享頁面時,將當前的操作行爲記錄下來作爲參數添加到鏈接中,這樣其他用戶打開鏈接時,自動重複一遍該操作即可
- 缺點:若頁面的操作行爲較爲複雜,鏈接參數會較多,導致鏈接較長,影響用戶體驗
帶頁面邏輯的短鏈接分享
- 場景:既需要攜帶用戶操作行爲,又希望有一個較短的鏈接
- 思路:
- 可以先使用一個長鏈接,然後將該長連接存入數據庫,將數據庫key值作爲鏈接參數, 打開鏈接時通過數據庫Key值獲取真實的長鏈接
http://url.com?key=123456
- 也可以通過將用戶操作記錄下來,存入數據庫中,然後打開鏈接時使用key值獲取用戶操作記錄
這裏提到的用戶操作記錄,本質上是頁面邏輯的參數
- 可以先使用一個長鏈接,然後將該長連接存入數據庫,將數據庫key值作爲鏈接參數, 打開鏈接時通過數據庫Key值獲取真實的長鏈接
- 注意:這裏記錄用戶操作時,不要使用遞增的數據庫記錄數,這樣會導致鏈接中的參數較爲有規律,容易導致信息泄露,簡單點的辦法是使用用戶操作記錄的信息生成hash值作爲key值
- 拓展:這樣生成的鏈接還是較長的,如
www.baidu.com?key=12345678
,可以再短一些嗎?答案是可以;我們生成的hash值,本質上就是一個10進制的數值,若我們將他轉爲更高進制的表示方式,那麼單個字符可以表示的數值就越大,對應生成的高進制hash值就越短,比如可以使用 0-9a-zA-Z作爲62進制編碼,將hash值轉爲一個更短的字符串
帶賬號驗證的鏈接分析
- 場景: 用戶分享鏈接後需要密碼進行驗證,如百度網盤
- 思路:基本思路和上面的 帶頁面邏輯的短鏈接分享一致,只是分享的鏈接先定向到一個公共的驗證頁面,然後這個驗證頁面依據參數跳轉到真實的頁面