Как кэшировать сгенерированную PHP динамическую страницу и включать мета-информацию Open Graphic - PullRequest
0 голосов
/ 27 марта 2012

Мне нужно решение для кэширования информации PHP на динамической странице и включения мета-информации.Моя проблема в том, что я использую кеширующий код, который сохраняет информацию о моей странице из кода и ниже, но не мета-информацию.

посмотрите на мою страницу Моя динамическая страница

Мое программное обеспечение динамически создает эту страницу из ID 5351 (песни в моей базе данных). Я использую php, чтобы получить информацию о песне.Чтобы сделать этот процесс немного более эффективным, я настроил кэширование 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 в мета-информации для моих тегов Open Graphic.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 Ответ

1 голос
/ 27 марта 2012

Если вы хотите добиться этого, вам следует кэшировать последнюю html-страницу, созданную вашим php-скриптом, или вы также можете заглянуть в кэш лака .

Если вы хотите сделать это с помощью 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
    }
    ?>

Надеюсь, приведенный выше псевдокод поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...