1

eコマースプラットフォーム用のキャッシュシステムを構築したい。

ページの最後で使用することを選択しましob_start('callback')た。ob_end_flush()

.cache訪問したURL用に作成されたファイルがあるかどうかを確認し、ファイルがある場合はその内容を印刷します。

私の問題は、ショッピングカートをライブのままにしておきたいので、キャッシュしたくないということです。どうすればそれを達成できますか?

<?php

    function my_cache_function($content) {
        return $content;
    }

    ob_start('my_cache_function');

<!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>
<title>test</title>
</head>
<body>
     test
     <?php
         //some ob_break() ?
     ?>
     <div id="shopping-cart">
         this should be the content I do not want to cache it
     </div>
     <?php
         // ob_continue() ?
     ?>

</body>
</html>
<?php
     ob_end_flush();
?>

前もって感謝します!

4

3 に答える 3

1

Zulakisのソリューションが完全に機能するかどうかはわかりません...この変更についてはどうでしょうか。

<?php
$pleaseCache=true;
function my_cache_function($content) {
    if($pleaseCache)
    {
        /// do your caching
    }
    return $content;
}
$output = "";
ob_start('my_cache_function');

<!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>
<title>test</title>
</head>
<body>
     test
     <?php
         $output .= ob_get_clean();
         $pleaseCache = false;
         ob_start('my_cache_function');
     ?>
     <div id="shopping-cart">
         this should be the content I do not want to cache it
     </div>
     <?php
         $output .= ob_get_clean();
         $pleaseCache = true;
         ob_start('my_cache_function');
     ?>

</body>
</html>
<?php
     $output .= ob_get_clean();
     ob_end_clean();
     echo $output;
?>

繰り返しますが、これが多くの意味をなすかどうかはわかりません...しかし、あなたには私が推測するあなたの理由があります。

于 2012-10-11T08:48:10.613 に答える
1

これを行うと、問題は、前に配置されたHTMLの前にコンテンツが出力されることです。そのコンテンツをある変数に保存してから、%SHOPPING-CART%のように、キャッシュの「テンプレート」ファイルでプレースホルダーを使用することをお勧めします。

したがって、実際のキャッシュされていないコンテンツを含むstr_replaceに置き換えることができます。

于 2012-10-11T08:19:46.883 に答える
1

あなたはこのようにそれを行うことができます:

<?php

    function my_cache_function($content) {
        return $content;
    }
    $output = "";
    ob_start('my_cache_function');

<!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>
<title>test</title>
</head>
<body>
     test
     <?php
         $output .= ob_get_clean();
     ?>
     <div id="shopping-cart">
         this should be the content I do not want to cache it
     </div>
     <?php
         ob_start();
     ?>

</body>
</html>
<?php
         $output .= ob_get_clean();
         echo $output;
?>

それは本当に意味がありませんが。

于 2012-10-11T08:21:13.813 に答える