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

PHP 動態輸出 JavaScript 代碼實作:配置變數前端共享

     編輯:PHP 相關知識

PHP 動態輸出 JavaScript 代碼實作:配置變數前端共享

後端配置(如 CDN 域名、API 基礎路徑、版本號)需同步給前端 JavaScript 使用時,透過 PHP 動態生成 JS 檔案是常見模式。本文展示完整實作含快取控制、內容長度標頭、字元編碼聲明。

完整實作代碼

<?php
// 取得系統配置物件(假設為單例/註冊容器)
$url = $this->getConfig()->url();

// 組裝 JS 內容:單一全域物件暴露所有配置
$content = "var url={ base:'{$url->base}',css:'{$url->css}',js:'{$url->js}',img:'{$url->img}',current:window.location};";

// 快取策略:7 天(604800 秒)
$expire = 604800;

// 必要 HTTP 標頭
header('Content-Type: application/javascript; charset=utf-8');
header('Cache-Control: max-age=' . $expire . ', public');
header('Accept-Ranges: bytes');
header('Content-Length: ' . strlen($content));
header('ETag: "' . md5($content) . '"');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');

// 輸出內容
echo $content;
?>

前端引用方式

<!-- HTML 頁面引入 -->
<script src="/config.js.php"></script>
<script>
console.log(url.base);   // 輸出 CDN 基礎域名
console.log(url.css);    // 輸出 CSS 資源路徑
console.log(url.current.href); // 當前頁面完整 URL
</script>

關鍵技術點解析

標頭作用備註
Content-Type: application/javascript正確 MIME 類型瀏覽器才會當作 JS 執行
charset=utf-8字元編碼聲明防止中文變數值亂碼
Cache-Control: max-age瀏覽器強快取減少重複請求,提升載入速度
ETag / Last-Modified協商快取驗證內容未變時回傳 304 Not Modified
Content-Length啟用 Keep-Alive/管線化精確傳輸長度,避免 chunked 編碼開銷

進階擴展:版本化與條件輸出

<?php
// 版本化:查詢字串帶版本號,部署時更新版本號即可失效快取
$version = 'v20240115';
header('Cache-Control: max-age=31536000, public, immutable'); // 1 年

// 環境區分:開發環境不快取
if (APP_ENV === 'development') {
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');
}

// 條件輸出:根據 User-Agent 或域名輸出不同配置
$isMobile = stripos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false;
$content = "var config = { api: '" . ($isMobile ? '/mobile-api' : '/api') . "' };";
?>

安全性提醒

  • 嚴禁輸出敏感資訊:資料庫密鑰、API Secret、內部 IP 等絕不可暴露於前端 JS
  • XSS 防護:動態內容若包含使用者輸入,必須經 json_encode() 轉義後再嵌入
  • CSP 政策:配置 Content-Security-Policy: script-src 'self' 限制腳本來源

此模式廣泛應用於前後端分離架構的配置下發、功能開關、A/B 測試參數等場景,是現代 Web 應用的基礎設施組件。

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