2012-10-08 101 views

回答

0

如何簡單地設置到期日在包頭 -

header("Cache-Control: public"); 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

應當指出的是,現代的瀏覽器做好緩存資源。通常這些方法用於強制重新加載資源;防止瀏覽器緩存。

+0

我已經使用了您在此發佈的相同代碼,但是我得到的結果低於其結果並且它不工作,[HTTP_PRAGMA] => no-cache [HTTP_CACHE_CONTROL] => no-cache –

+0

您如何引用JavaScript文件? – Lix

+0

對不起,我不明白你的意思到底在這裏....我通過腳本標記引用JavaScript文件... –

2

你可以使用HTML元:

<meta http-equiv="Cache-control" content="public">

PHP頭:

header("Cache-Control: public"); // HTTP/1.1 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

來源:[PHP Manual]

+1

在過去設置過期日期會強制瀏覽器重新加載資源 - 完全相反的緩存.. – Lix

+0

看看'Cache-Control'頭部以及... – Lix

+1

對不起。閱讀手冊的錯誤部分,不太熟悉標題。 –

0

我認爲你確實想要緩存什麼有些混淆。這裏提到兩個項目 -

  1. 頁面本身包含所有HTML元素和對外部文件的引用。
  2. HTML文檔引用的JavaScript文件。

要緩存第一個項目(頁面),使用PHP設置標題應緩存頁面的HTML內容。

header("Cache-Control: public"); 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

這將緩存頁面的內容,但不一定是它引用的文件。例如,如果你在你的HTML文件中有這樣的代碼 -

<script src="http://domain/some/js/file.js" type="javascript" ></script> 

然後就是文本將緩存而不是file.js。要手動設置這些外部文件的緩存,您需要使用PHP提供服務並手動設置標題。 你會想要做類似的事情這 -

<script src="another_file.php" type="javascript" ></script> 
another_file.php

現在你會想加載JavaScript文件和「回聲」它與適當的標題 -

$file = '/absolute/path/to/your_script.js'; 
if (file_exists($file)) { 
    header('Content-Type: text/javascript'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit(); 
}