<?php 
 
/** 
 * This file is part of the PageCache package. 
 * 
 * @author Muhammed Mamedov <[email protected]> 
 * @copyright 2016 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
/** 
 * 
 * This demo demonstrates basic caching functionality of PageCache. 
 * 
 * Two versions of this page will be saved. 
 * If your cache directory is cache, then look for cache/54/3/668.. and cache/97/52/ead.. files. 
 * 
 * Despite that URL doesn't change (PageCache DefaultStrategy doesn't support $_POST()), PageCache is able to 
 * save two different versions of the page based on $_SESSION data. 
 * 
 * enableSession() is useful if you are going to cache a dynamic PHP application where you use $_SESSION 
 * for various things, like user login and etc. 
 * 
 * 
 * NOTE: If you want to cache only URLs before user login or other session manipulations, you could put 
 * PageCache call inside if(!isset($_SESSION[..])) { //run PageCache only on pages without certain Session variable } 
 * 
 */ 
 
require_once __DIR__ . '/../vendor/autoload.php'; 
 
/** 
 * session is started only when "Enable session" button is pressed 
 */ 
 
if (isset($_POST['withsessions']) && $_POST['withsessions'] == '1') { 
    session_start(); 
 
    //sample session data 
    $_SESSION['demo_session'] = array('my val1', 'my val2'); 
    $_SESSION['user'] = 12; 
    $_SESSION['login'] = true; 
} 
 
$cache = new PageCache\PageCache(); 
 
//cache path 
$cache->config()->setCachePath(__DIR__ . '/cache/'); 
 
//Disable line below and you will see only 1 cache file generated, 
// no differentiation between session and without session calls 
// 
//use session support in cache 
// 
$cache->config()->setUseSession(true); 
 
//do disable session cache uncomment this line, or comment line above and see 
//$cache->config()->setUseSession(false); 
 
//enable log 
//$cache->config()->setEnableLog(true); 
//$cache->config()->setLogFilePath(__DIR__.'/log/cache.log'); 
 
 
//start cache; 
$cache->init(); 
 
echo 'Everything below is cached, including this line<hr>'; 
 
?> 
<html xmlns="http://www.w3.org/1999/html"> 
<head> 
    <style type="text/css"> 
        button { 
            margin: 0; 
            padding: 10px; 
            font-weight: bold; 
        } 
 
        fieldset { 
            margin-bottom: 10px; 
            background-color: #eee; 
        } 
 
        form { 
            float: left; 
            margin: 0; 
            margin-right: 20px; 
            padding: 20px; 
        } 
    </style> 
</head> 
<body> 
<h1>Demo using Session Support</h1> 
Click on the links below to see how PageCache works with sessions. Although page URL doesn't change, PageCache is able 
to cache 2 different version of this page based on Session variables. 
<br/><br> 
<fieldset> 
    <form method="post" action=""> 
        <input type="hidden" value="1" name="withsessions"> 
        <button type="submit">Enable session cache</button> 
    </form> 
    <form method="post" action=""> 
        <input type="hidden" value="0" name="withsessions"> 
        <button type="submit">No session cache</button> 
    </form> 
</fieldset> 
 
 
<?php 
/** 
 * Print session data if present 
 */ 
if (isset($_SESSION['demo_session'])) { 
    echo '<b>SESSION IS ENABLED. Session contents:</b> <fieldset><pre>'; 
    print_r($_SESSION); 
    echo '</pre></fieldset>'; 
} else { 
    echo '<fieldset>No session data</fieldset>'; 
} 
 
?> 
 
<br> 
<h3 style="color: red">This is a Session demo PageCache page that is going to be cached.</h3> 
<h3>Default cache expiration time for this page is 20 minutes. You can change this value in your <i>conf.php</i> 
    and passing its file path to PageCache constructor, or by calling <i>setExpiration()</i> method.</h3> 
<h3 style="color: green;">This is a dynamic PHP <i>date('H:i:s')</i> 
    call, note that time doesn't change on refresh: <?php echo date('H:i:s'); ?>.</h3> 
<br> 
<h4>Check examples/cache/ directory to see cached content. 
    Erase this file to regenerate cache, or it will automatically be regenerated in 20 minutes.</h4> 
</body> 
</html>
 
 |