2013-06-01 30 views
3

有很多建議如何使用標題來防止瀏覽器緩存文件。我希望做相反的事情。下面的cache.php文件永遠不會改變。我已經使用FF,Chrome和FF測試過了,每次index.html被重新加載時,都會從服務器上下載cache.php文件。如何告訴瀏覽器緩存JavaScript文件「cache.php」?謝謝強制瀏覽器緩存PHP生成的JavaScript

的index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 
     <title>Testing</title> 
     <script src="cache.php" type="text/javascript"></script> 
    </head> 
    <body> 
     <p>Hello!</p> 
    </body> 
</html> 

cache.php

<?php 
    syslog(LOG_INFO,'cache.php'.rand()); 
    header('Content-type: text/javascript'); 
    echo('alert("Hello!");');  
?> 
+0

如果它永遠不會改變,爲什麼你不保存生成的文件,並將其用作js源代碼?這樣你就不必在php中使用http緩存標頭,並且可以讓http服務器軟件爲你做這件事。 –

+0

@HaukeP。它是由數據庫生成的一堆數據,通過從數據庫中提取數據並且不創建單獨的文件更易於維護。我有一個類似的應用程序下載圖像。我的圖片由PHP提供,因此我可以控制誰可以查看。我希望服務器第一次將圖像發送到客戶端,但是客戶端會將緩存的圖像用於將來的請求。 – user1032531

回答

0

你必須要實現緩存PHP處理。檢查這個問題及其答案的細節:How to use HTTP cache headers with PHP

+0

該帖子有多個回覆。在查看'$ _SERVER'(或'apache_request_headers();')時,我沒有'$ _SERVER ['HTTP_IF_MODIFIED_SINCE']'。 – user1032531

+0

(以下簡單說明。)If-Modified-Since'是瀏覽器發送的HTTP頭,如果它的請求頁存儲在其緩存中。但是,瀏覽器需要知道頁面的修改日期,以便將其存儲在緩存中。因此,你必須發送一個標題,告訴瀏覽器必要的日期,例如像這樣:'header(「Last-Modified:$ yourdate」);'。一旦瀏覽器接收到帶有該標題的頁面,它就會將其存儲在緩存中,並在下次請求時提供「Is-Modified-Since」標題。那麼你的代碼必須相應地做出反應。 –

相關問題