簡體   English   中英

用於javascript和css的PHP內容緩存

[英]PHP content caching for javascript and css

我有一個獨特的問題,使用谷歌很難解決。 我正在將我的所有javascript和css整合到單獨的php文件中,這些文件使用require_once()來提取文件的內容.javascript文件看起來像這樣:

<?php
header('Content-Type: text/javascript');
require_once('jquery.form.js');
require_once('jquery.jqtransform.js');
require_once('jquery.validate.js');
?>

我的具體問題是,由於php文件擴展名,Web瀏覽器會“看到”這是一個動態頁面,然后每次加載網站上的頁面時都會重新請求內容。 我想要做的是從瀏覽器獲取上次請求的時間 ,然后檢查每個文件修改時間 ,看看我是否真的需要再次發送文件內容。 事實證明很難找到用戶上次請求的時間。 此外,我還沒有開始解決查找包含的文件的最后修改日期的問題,因此如果有關於在服務器上查找文件的文件詳細信息的信息 ,那么也將不勝感激。

為了清楚起見,我這樣做的原因是因為(我認為)它比單獨的gzip壓縮文件更好地利用了gzip壓縮。

提前致謝

我專門寫了一系列關於這個問題的帖子。 請參閱使用PHP增強Javascript和使用PHP 增強CSS 這些包括:

  • 組合文件;
  • Gzipping最佳實踐;
  • 緩存最佳實踐;
  • 版本控制輸出。

你的前提是不正確的。 瀏覽器不會“看到”PHP文件擴展名並決定不緩存內容。 有關瀏覽器如何工作的信息,請訪問http://www.enhanceie.com/redir/?id=httpperf

您應該在響應上設置ETAG,然后只需檢查If-None-Match請求標頭,如果內容不變則返回304。

瀏覽器不會通過其擴展名確定頁面或文件是動態的還是靜態的。 它的標題呢。 只需設置正確的標題,以便瀏覽器知道它可以緩存結果。

還有,放棄收盤?> 這不是必需的,也是不好的做法。

Alister Bulman剛剛提到了一個針對這個問題的整潔的庫解決方案,但將其作為評論。 我重復他的評論作為答案,因為我發現它很有價值:

Minify - code.google.com/p/minify - 是一個專門用於執行此處所需操作的庫 - 連接文件並發送相應的標題,同時修剪內容,並且很可能將它們壓縮,同時將結果緩存在磁盤上。 - Alister Bulman 2010年1月10日10:44

您可以使用apache mod_deflate啟用自動gzipping文件。

您還可以使用apache mod_rewrite將html中的這些文件稱為js文件,並將請求重定向到php文件,從而避免服務器緩存問題。

像這樣的東西:

RewriteEngine On
RewriteRule (.*).js $1.php

將此代碼放在目錄中的.htaccess文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM