Наш предыдущий веб-мастер настраивал этот сайт, и кеширование, которое он настраивал, прекрасно работает для большинства браузеров, но я обнаружил, что некоторые версии Opera не работают, а некоторые онлайн-инструменты SEO, такие как Submit Express Analyzer . Я подозреваю, что это проблема с заголовками. Я читал об ob_start ("ob_gzhandler"), но я не уверен, как я могу реализовать его в этом сценарии.
Сайт полностью управляется файлом маршрутизатора, уникальными файлами контроллера для каждого типа страницы и .htaccess. В файле маршрутизатора приведенный ниже код установлен для поиска кэшированной версии страницы и загрузки содержимого, в противном случае загрузите страницу.
Кэширование сжимает содержимое страницы с помощью gzencode и сохраняет его в базе данных в кеш-таблице с хешем uri. Если кэшированный файл существует, содержимое извлекается из базы данных.
Opera отображает пустую страницу, а экспресс-тест Submit не распознает страницу. Я почти уверен, что файл .htaccess не имеет ничего общего с проблемой. Код ниже, где я думаю, проблема заключается в *. 1009 *
<?php
$loadTime = microtime(true);
session_start();
if (!isset($_SESSION['var']))
$_SESSION['var'] = rand(0, 2);
if (!isset($_SESSION['var2']))
$_SESSION['var2'] = rand(0, 4);
require(dirname(__FILE__).'/config/common.php');
$uri = $_SERVER['REQUEST_URI'];
$request = explode('/', substr($uri, 1));
$request = preg_replace('/\..*/', '', $request);
$uriHash = sha1($uri);
if($uri == '/') //This is the Index...
{
Код неактуального индекса
}
try
{ // LOOKS FOR CACHE IN DB BASED ON URI
$cache = $GLOBALS['db']->getRow("SELECT * FROM cache_tbl WHERE uri_hash = '$uriHash'");
}catch ( Exception $e ) {
$cache = array();
}
if ( !empty($cache) && ($cache['mod_date'] * 60 * 60 * 24) > $loadTime )
{ // IF NO CACHE IN DB, SETS HEADERS FOR COMPRESS OR NO COMPRESS
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
if( headers_sent() )
$encoding = false;
else if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
$encoding = 'x-gzip';
else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
$encoding = 'gzip';
else
$encoding = false;
$compressed = $cache['contents'];
if ( $encoding ) {
header("Content-Encoding: ".$encoding);
echo $compressed;
}
} else {
if ($request[0] == 'venues') {
header("HTTP/1.1 301 Moved Permanently");
header('Location: '.HOST.$request[1].'.html');
}
Подробнее код
if ( // Irrelevant Conditions ) {
$contents = ob_get_clean();
echo $contents;
$compressed = gzencode($contents, 7);
try {
Admin::add('cache_tbl', array('uri_hash' => $uriHash, 'contents' => $compressed, 'mod_date' => $loadTime));
} catch(Exception $e) { ; }
ob_end_flush();
}
}
В этом файле много чего происходит, и я постарался вырезать как можно больше материала, чтобы избежать путаницы. Любая помощь, безусловно, высоко ценится! Заранее спасибо!