首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

網站顯示「常去網站」信息實現原理:Cookie、LocalStorage、服務端畫像與推薦系統

     編輯:程式設計綜合問答

核心機制:客戶端標識 + 服務端行為分析

**非單一技術**,而是 **「標識用戶 → 采集行為 → 建模畫像 → 實時推薦」** 完整鏈路。

關鍵技術棧分層

層級技術作用典型方案
用戶標識Cookie (第一方/第三方)跨會話、跨頁面識別同一瀏覽器`_ga`, `_fbp`, `session_id`, `user_uuid` (HttpOnly + Secure + SameSite=Lax)
LocalStorage / IndexedDB存儲更大、不隨請求發送、可存設備指紋設備指紋、偏好設定、離線數據
登錄態 (User ID)最高精度,關聯後台業務數據JWT / Session ID + Redis
行為采集埋點 SDK (JS/移動端)頁面浏覽、點擊、停留、搜索、加購Google Analytics, Mixpanel, 自建 `track.gif?event=...`
畫像構建實時/離線計算標簽化:興趣、意圖、價值、生命週期Flink/Spark Streaming + HBase/Redis + 標簽體系
推薦服務召回 → 粗排 → 精排 → 重排毫秒級返回「常去/猜你喜歡」列表Faiss/Annoy (向量檢索) + LightGBM/XGBoost (CTR預估)

「常去網站」具體實現邏輯 (簡化版)

// 後端 API: GET /api/user/frequent-sites?userId=xxx&limit=10
public List getFrequentSites(Long userId) {
    // 1. 讀取用戶最近 30 天訪問日志 (ClickHouse / Elasticsearch)
    List logs = visitLogRepo.findByUserIdAndTimeRange(userId, now.minusDays(30));
    
    // 2. 聚合統計
    Map statMap = logs.stream()
        .collect(Collectors.groupingBy(VisitLog::getSiteDomain,
            Collectors.collectingAndThen(Collectors.toList(), list -> {
                SiteStat s = new SiteStat();
                s.domain = list.get(0).getSiteDomain();
                s.name = list.get(0).getSiteName();
                s.visitCount = list.size();
                s.lastVisit = list.stream().max(Comparator.comparing(VisitLog::getTime)).get().getTime();
                s.avgStaySeconds = (int) list.stream().mapToLong(VisitLog::getStaySeconds).average().orElse(0);
                return s;
            })));
    
    // 3. 綜合評分: 訪問頻次 * 0.6 + 最近度 * 0.3 + 停留時長 * 0.1
    return statMap.values().stream()
        .sorted(Comparator.comparingDouble(s -> 
            s.visitCount * 0.6 + 
            (1.0 / (1 + ChronoUnit.DAYS.between(s.lastVisit, LocalDate.now()))) * 0.3 + 
            Math.log1p(s.avgStaySeconds) * 0.1).reversed())
        .limit(10)
        .map(s -> new SiteVO(s.domain, s.name, s.visitCount))
        .collect(Collectors.toList());
}

前端渲染策略

  • 服務端渲染 (SSR):頁面直出 HTML,首屏最快、SEO 友好 (Next.js, Nuxt, Razor Pages)
  • 客戶端異步加載:頁面骨架先出,`fetch('/api/frequent-sites')` 填充區塊 (React/Vue/jQuery)
  • 邊緣緩存:CDN 緩存用戶畫像片段 (Edge Workers / Cloudflare Workers),降低延遲

隱私合規要點 (GDPR / 個信法 / CCPA)

  • **明確告知**:隱私政策列明收集「瀏覽歷史」用於「個性化推薦」
  • **可選退出**:提供「關閉個性化推薦」開關,寫入 Cookie `opt_out=1`
  • **數據最小化**:僅存域名/次數/時間,**不存具體 URL 參數/搜索詞/表單內容**
  • **保留期限**:原始日志 30-90 天,聚合畫像滾動更新

總結

**Cookie 只是「身份證」,推薦系統才是「大腦」**。現代實現:埋點采集 → 實時流計算畫像 → 向量檢索 + 模型精排 → API 下發 → 前端渲染。單靠 Cookie 無法實現智能「常去網站」推薦。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved