2011-11-14 11 views
1

キャッシュスクリプトのプロセスを説明しながら私と一緒に裸です。現在のところ、ファイルをキャッシュするのは初めてですが、ファイルを再キャッシュするように強制しようとすると、何も起こりません。まず最初の最初、このコードは、ファイルに配置されて再キャッシュに失敗したキャッシュスクリプト

は、各ページの上部に含まheader.phpのと呼ば:

<?php 
    $requestURI = rtrim($_SERVER['REQUEST_URI'], '/'); 
    if (stripos($requestURI,'/admin') != false) { //Don't cache admin pages 
     $cache_time = 0; 
    } else{ 
     $cache_time = 31556926; 
    } 
    $cache_folder = $_SERVER['DOCUMENT_ROOT'].'/cache/'; 
    $cache_filename = $cache_folder.md5($requestURI).'.txt'; //Create unique name for cache 
    $cache_created = (file_exists($cache_filename)) ? filemtime($cache_filename) : 0; 
    if ($_POST['cache'] != "yes") { // Allow function to be overridden 
    if ((time() - $cache_created) < $cache_time) { 
     readfile($cache_filename); // The cached copy is still valid use it. 
     die(); 
    } 
    } 
ob_start(); 
?> 

これは、キャッシュされたファイルがすでにこのページに、それが持っているかどうかが存在するかどうかをチェック失効したかどうか。

このコードは、footer.phpというファイルに配置されているすべてのページの一番下に含ま:

<?php 
$html = ob_get_clean(); 
$config = array('indent' => TRUE, 
       'drop-empty-paras' => FALSE, 
       'output-xhtml' => TRUE, 
       'quote-ampersand' => TRUE, 
       'indent-cdata' => TRUE, 
       'tidy-mark' => FALSE, 
       'wrap' => 200); 
$tidy = tidy_parse_string($html, $config, 'UTF8'); //Clean HTML output 
file_put_contents($cache_filename, $tidy->value); //Create or update cache 
mysql_select_db('reithg_UNITS'); 
$url = $_SERVER['DOCUMENT_ROOT'].$requestURI; 
$cache = md5($requestURI); 
$query = mysql_query("SELECT * FROM Cache WHERE CACHE = '$cache'") or die(mysql_error()); 
$exists = mysql_num_rows($query); 

function getIP() //Get the client's IP 
{ 

if (isset($_SERVER["HTTP_CLIENT_IP"])) 
{ 
return $_SERVER["HTTP_CLIENT_IP"]; 
} 
elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
{ 
return $_SERVER["HTTP_X_FORWARDED_FOR"]; 
} 
elseif (isset($_SERVER["HTTP_X_FORWARDED"])) 
{ 
return $_SERVER["HTTP_X_FORWARDED"]; 
} 
elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])) 
{ 
return $_SERVER["HTTP_FORWARDED_FOR"]; 
} 
elseif (isset($_SERVER["HTTP_FORWARDED"])) 
{ 
return $_SERVER["HTTP_FORWARDED"]; 
} 
else 
{ 
return $_SERVER["REMOTE_ADDR"]; 
} 
} 
$IP = getIP(); 
if ($exists != 0) { 
$cached = mysql_fetch_row($query); 
$cachedID = $cached[0]; 
mysql_query("UPDATE Cache SET URL = '$url', CACHE = '$cache', UPDATED = NOW(), `UPDATED BY` = '$IP', WHERE ID = $cachedID;") or die(mysql_error()); 
} else { 
mysql_query("INSERT INTO Cache (ID, URL, CACHE, CREATED, UPDATED, `CREATED BY`, `UPDATED BY`) VALUES('NULL', '$url', '$cache', NOW(), 'NULL', '$IP', 'NULL') ") or die(mysql_error()); 
} 
echo $tidy; 
?> 

をそれは、キャッシュファイルを作成し、それがデータベースの世代だに関するいくつかの情報を収集します。

次に、キャッシュされたすべてのページのリストを生成する別の場所にajaxスクリプトがあり、それぞれPOSTを介してcache = yesを送信して、強制的に再キャッシュする必要があります。 (キャッシュされたファイルを読み込みません)、何も起こらず、キャッシュされたファイルは同じままです。それはPHPによって生成された後にここでjQueryのスクリプトは次のとおりです。POSTが成功するよう

function recache(){ 
      var request1 = $.ajax({type: 'POST',url: '../units_and_evidence/flash_delivery.php?id=1',data: 'cache = yes'}); 
      var request2 = $.ajax({type: 'POST',url: '../',data: 'cache = yes'}); 
      var request3 = $.ajax({type: 'POST',url: '../units_and_evidence',data: 'cache = yes'}); 
      var request4 = $.ajax({type: 'POST',url: '../units_and_evidence/flash_delivery.php?id=15',data: 'cache = yes'}); 
      function successful() { 
      alert("Reset cache success"); 
      } 
      function failure() { 
      alert("Reset cache failed"); 
      } 
      var recache = $.when(request1,request2,request3,request4).then(successful, failure); 
      } 

したがって、それはheader.phpのまたはfooter.php

の問題でなければならない、 successful()関数を返します

答えて

0

私はこれを解決しました。問題はdataプロパティの間隔に問題がありました。

従ってdata: 'cache = yes'data: 'cache=yes'になる必要があります。

関連する問題