讓長鏈接不再煩人——Shortened

在如今的互聯網世界中,很多網址異常冗長,有的甚至長達幾百個字符。這些長鏈接不僅讓人產生視覺疲勞,而且還會給自己造成一定的危險。例如,當我們利用短信、郵件等方式將長鏈接分享給朋友時,極有可能會被電話軟件、短信軟件進行字符限制,甚至超出字符限制卻又導致鏈接截斷,從而導致鏈接無法使用或無效。這無疑會給我們帶來極大的不便。因此今天我們要介紹一個非常重要的工具——Shortened。

一、快速有效的短鏈接生成

Shortened是一個快速有效的短鏈接生成器,只要您輸入所需的原始鏈接,系統將在瞬間生成一個簡短的鏈接,長度大概在5-10個字符。而這個短鏈接可以很好地避免原鏈接的瑣碎、混亂,人們可以輕鬆記住這些短鏈接,方便快速訪問。

二、高可用性和穩定性

為了保證我們生成的短鏈接可以長期有效,Shortened將所有的鏈接都進行了備份處理,並且設置了多個備用節點,使得即使主節點發生故障,也能夠自動切換到備用節點,確保短鏈接一直處於可用狀態。

三、靈活的鏈接跟蹤與數據分析

通過使用Shortened,您可以不僅僅是生成短鏈接,更可以為自己的鏈接跟蹤與數據分析注入有力的“血液”。在使用Shortened的過程中,可以輕鬆查看自己的鏈接訪問量,鏈接源頭,用戶訪問時間,用戶瀏覽器類型,時間分布圖等相關統計數據,方便您深入分析自己鏈接的流量變化,以便幫助做出更好的決策。

四、主要功能實現

1. 短鏈接生成


def url_shortener(long_url: str) -> str:
    """轉換長鏈接為短鏈接"""
    # 生成隨機短地址
    short_url = gen_random_string()
    # 保存原始長地址和短地址的對應關係
    save_url_mapping(short_url, long_url)
    return short_url

2. 短鏈接還原


def url_expand(short_url: str) -> str:
    """轉換短鏈接為長鏈接"""
    long_url = validate_short_url(short_url)
    # 如果短鏈接不存在或長鏈接不存在則返回錯誤提示
    if not long_url or not short_url:
        return "404 Not Found"
    return long_url

3. 數據統計與分析


def stats_short_url(short_url: str) -> dict:
    """獲取指定短鏈接的訪問統計信息"""
    if not short_url or not is_valid_short_url(short_url):
        return {}

    stats = {"short_url": short_url}
    url_info = REDIS_CONN.hgetall(f"url:{short_url}")
    stats["long_url"] = url_info.get(b"long_url").decode("utf-8")
    stats["created_at"] = url_info.get(b"created_at").decode("utf-8")
    stats["visited_count"] = url_info.get(b"visited_count").decode("utf-8")

    # 訪問時間統計
    stats["visited_time"] = defaultdict(int)
    visited_time_raw = url_info.get(b"visited_time")
    if visited_time_raw:
        visited_time_dict = json.loads(visited_time_raw.decode("utf-8"))
        for k, v in visited_time_dict.items():
            stats["visited_time"][k] = v

    # 瀏覽器類型統計
    stats["user_agent"] = defaultdict(int)
    user_agent_raw = url_info.get(b"user_agent")
    if user_agent_raw:
        user_agent_dict = json.loads(user_agent_raw.decode("utf-8"))
        for k, v in user_agent_dict.items():
            stats["user_agent"][k] = v

    return stats

五、總結

在本文中,我們介紹了一個最簡單、最實用的短鏈接生成器——Shortened,並介紹了它的優點和主要功能實現方式。雖然現在各種短鏈接服務已經比比皆是,但是自己編寫一個短鏈接服務,您可以完全掌握短鏈接的生成原理,同時也能讓您的業務更加靈活、更加方便。我們希望能夠給各位提供一些思路和參考,同時我們歡迎大家去pull Request增加代碼的可擴展性和優化。

原創文章,作者:TVLQG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316369.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TVLQG的頭像TVLQG
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

  • Avue中如何按照後端返回的鏈接顯示圖片

    Avue是一款基於Vue.js、Element-ui等技術棧的可視化開發框架,能夠輕鬆搭建前端頁面。在開發中,我們使用到的圖片通常都是存儲在後端服務器上的,那麼如何使用Avue來展…

    編程 2025-04-28
  • LwIP短鏈接client例程用法介紹

    本文將詳細闡述LwIP短鏈接client例程,該例程是基於LwIP協議棧實現的一個短鏈接客戶端程序,適用於嵌入式設備上進行互聯網通信。 一、LwIP介紹 LwIP(Lightwei…

    編程 2025-04-28
  • 如何創建短鏈接和實現熱切換

    在本文中,我們將會介紹如何使用Python創建短鏈接和實現熱切換功能。 一、創建短鏈接 1、什麼是短鏈接?通俗易懂來說,短鏈接就是將長鏈接變成一個短小精悍的地址,通常是為了方便用戶…

    編程 2025-04-28
  • 源程序只有經過編譯和鏈接後才能成為可執行程序

    源程序只有經過編譯和鏈接後才能成為可執行程序,這是編程開發中極為重要的一個環節。下面從編譯、鏈接以及可執行程序的生成過程三個方面來詳細闡述。 一、編譯 編譯是將源碼轉化為機器代碼的…

    編程 2025-04-27
  • Python中提取子鏈接Python頭歌

    本文將從多個方面詳細闡述Python中提取子鏈接Python頭歌的方法和技巧。 一、正則表達式方法 使用Python的正則表達式模塊可以方便地提取子鏈接Python頭歌。以下是一個…

    編程 2025-04-27
  • uniapp跳轉到外部鏈接詳解

    一、常規跳轉方式 1、使用a標籤進行跳轉: <a href=”https://www.baidu.com”>跳轉到百度</a> 2、使用window.loc…

    編程 2025-04-24
  • 刪除軟鏈接ln -s

    一、 前言 軟鏈接(symbolic link 或soft link)是 Linux 上常用的一種文件連接方式,是通過一個鏈接文件建立一個指向另一個文件或目錄的鏈接,這點類似於 W…

    編程 2025-04-23
  • CSS URL編寫技巧:打造獨特的樣式鏈接

    在我們的網頁設計中,樣式鏈接(CSS URL)是一個非常重要的部分。它不僅可以讓我們的網頁變得更加美觀,還可以提高用戶的體驗。但是,如何打造獨特的樣式鏈接呢?本文將從以下幾個方面進…

    編程 2025-04-23
  • 解決errorlnk2019鏈接錯誤的方法

    如果您在編譯C++項目時遇到errorlnk2019鏈接錯誤,那麼恭喜您,您來到了正義的道路上。本文將從多個方面為您介紹如何解決errorlnk2019鏈接錯誤。 一、檢查頭文件 …

    編程 2025-04-22
  • 探究Blob鏈接

    一、什麼是Blob鏈接 Blob鏈接是一種基於URL.createObjectURL(blob)生成的鏈接,可以將文件或數據的內容轉換為URL的形式,方便進行下載或者展示。Blob…

    編程 2025-04-20

發表回復

登錄後才能評論