2012-03-27 2 views
0

PHP 정보를 동적 페이지에 캐싱하고 메타 정보를 포함하려면 솔루션이 필요합니다. 내 문제는 내 페이지 정보를 코드 및 아래에서 저장하는 캐싱 코드를 사용하지만 메타 정보가 아닙니다. 내 페이지에서PHP에서 생성 한 동적 페이지를 캐시하고 Open Graphic Meta 정보를 포함하는 방법

보기는 My Dynamic Page

내 소프트웨어는 동적 나는 노래 정보를 잡아 가고 PHP를 사용하고있는 ID 5351 (내 데이터베이스의 노래)에서이 페이지를 만드는 것입니다. 이 프로세스를 좀 더 효율적으로 만들려면 PHP 캐싱을 설정해야합니다. 나는 .... 이제 아래의 코드를 사용하여이 문제를 캐싱하고

<?php 

    $cachefile = "cache/".$reqfilename.$cache_folder.md5($_SERVER['REQUEST_URI']); 


    $cachetime = 11000 * 60; // 110000 minutes 


    // Serve from the cache if it is younger than $cachetime 

    if (file_exists($cachefile) && (time() - $cachetime 
    < filemtime($cachefile))) 
    { 

    include($cachefile); 


    echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." 
    -->n"; 


    exit; 

    } 

    ob_start(); // start the output buffer 

?>

PHP의 캐시는이를 사용하여 수행되고있다,하지만 내 문제는 단지 다음이 코드에서 PHP 정보를 캐시한다 . 이것이 문제가되는 이유는 오픈 그래픽 태그에 대한 메타 정보에서 PHP를 사용하기 때문입니다. OG는 사람들이 내 음악을 Facebook에서 "좋아할"수있게 해줍니다. 내 OG 태그는 다음과 같습니다.

<title>Chennai Christian Radio</title> 
<meta property="og:title" content="<?php echo $song->title; ?> by <?php echo $song->artist; ?> - Found on Chennai Christian Radio"/> 
<meta property="og:type" content="song"/> 
<meta property="og:url" content="http://chennaichristianradio.com/PHP/web/songinfo.php?songID=<?php echo $song->ID; ?>"/> 
<meta property="og:image" content="<?php echo $song->picture; ?>"/> 
<meta property="og:site_name" content="Chennai Christian Radio"/> 
<meta property="fb:admins" content="1013572426"/> 
<meta property="og:description" 
     content="Chennai Christian Radio is your last stop for today's best Christian Music. http://chennaichristianradio.com"/> 

그래서 ...... 내 동적 페이지를 캐싱하고 메타 정보를 포함하는 솔루션은 무엇입니까? 그것은 도전적으로 최선의 선택이지만 현재 코드로는 여전히 MYSql 서버에 메타 정보와 노래 정보를 쿼리합니다. 이것에 대한 정적 페이지를 작성하고 내 데이터베이스를 쿼리하는 대신 이러한 페이지를 가리키게하면 내 서버로 PHP 트래픽을 줄이는 데 도움이 될뿐만 아니라 더 효율적으로 사용할 수 있다고 생각했습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

PHP 스크립트로 작성한 최종 html 페이지를 캐시해야하거나, varnish cache을 볼 수도 있습니다.

PHP를 사용하여 이렇게하려면 출력 버퍼링을 시작하고 출력 버퍼의 내용을 클라이언트에 보내기 전에 캐시에 씁니다. 다음 (의사)와 같은 뭔가

<?php 

    $cachefile = "cache/".$reqfilename.$cache_folder.md5($_SERVER['REQUEST_URI']); 


    $cachetime = 11000 * 60; // 110000 minutes 


    // Serve from the cache if it is younger than $cachetime 

    if (file_exists($cachefile) && (time() - $cachetime 
    < filemtime($cachefile))) 
    { 

    include($cachefile); 


    echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." 
    -->n"; 


    exit; 

    } 

    // cache miss 

    ob_start(); 

    // your code logic here 

    // your views 

    // at very end 

    // write the ouput buffer content to cache file 
    file_put_contents($cachefile, ob_get_contents()); 
    ob_end_flush(); // this will send the response to client 
    } 
    ?> 

....... 모든 나는 위의 의사는 내가 니스로 보았다

+0

도움이되기를 바랍니다,하지만 난 내 서버에 그를 설치할 수 있다고 생각하지 않습니다 최종 결과를 캐싱하고 고객에게 해당 페이지를 가리 키도록 제안 하시겠습니까 ?? –

+0

일부 의사 코드를 추가했습니다. 캐싱 로직과 결합하여 – Josnidhin

+0

아직 배운 그대로 내 무지를 용서하십시오. 포함 된 코드와 결합 된 캐싱 코드를 포함하여 출력 코드의 모양은 어떻게됩니까? 정말 고맙습니다! –

관련 문제