| 
<?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>
 |