首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 獲取 QQ 頭像兩種方法:直連與代理模式對比

     編輯:PHP 相關知識

前言

整合 QQ 登入或顯示 QQ 頭像時,需從騰訊伺服器獲取頭像。本文介紹兩種 PHP 實作方式並對比優缺點。

方法一:前端直連(img 標籤直接指向)

<?php
$qq = '12345678';
echo '<img src="https://q1.qlogo.cn/g?b=qq&nk=' . $qq . '&s=100&t=' . time() . '">';
?>

參數說明:b=qq 業務類型、nk QQ 號、s=100 尺寸(40/100/140/640)、t 時間戳防快取。

方法二:後端代理輸出(PHP 讀取轉發)

<?php
$qq = '12345678';
$src = 'https://q1.qlogo.cn/g?b=qq&nk=' . $qq . '&s=100&t=' . time();
header('Content-Type: image/png');
$img = imagecreatefromstring(file_get_contents($src));
imagepng($img);
imagedestroy($img);
?>

詳細對比

維度方法一直連方法二代理
動態圖支援✅ 完整支援 GIF 動圖❌ 僅輸出靜態幀(imagepng 限制)
載入速度較慢(瀏覽器直接連騰訊,受跨域/防盜鏈影響)較快(伺服器內網/CDN 回源,可本地快取)
隱私保護暴露 QQ 號於前端 HTML隱藏 QQ 號,前端只見代理路徑
伺服器負擔無佔用頻寬、CPU、記憶體
失效處理瀏覽器顯示破圖可預設預設頭像、錯誤重試

選型建議

  • 用戶個人頁、評論列表:方法一,支援動圖、減輕伺服器
  • 高流量首頁、Widget、需隱私保護:方法二,可快取、隱藏 QQ 號
  • 混合策略:預設方法二快取,快取失效回源方法一

進階:本地快取優化代理模式

$cacheFile = "cache/avatar_{$qq}.png";
if (file_exists($cacheFile) && time() - filemtime($cacheFile) < 86400) {
    readfile($cacheFile);
    exit;
}
// 遠端獲取並儲存
$img = imagecreatefromstring(file_get_contents($src));
imagepng($img, $cacheFile);
imagepng($img);
imagedestroy($img);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved