我們以前的網站管理員建立這個網站,緩存他樹立優良的大多數瀏覽器的作品,但我發現,歌劇的一些版本不工作,一些在線SEO工具,如Submit Express Analyzer。我懷疑這是頭文件的問題。我已閱讀關於ob_start(「ob_gzhandler」),但我不知道如何在這種情況下實現它。使用緩存的PHP/MySQL網站。大部分時間是什麼使這項工作成爲可能?
該網站全部由路由器文件,獨特的控制器文件爲每種類型的頁和的.htaccess的控制。在路由器文件中,下面的代碼被設置爲尋找緩存版本的頁面並加載內容,否則加載頁面。
緩存壓縮網頁內容與gzencode並將其存儲在數據庫中的緩存表的URI哈希。如果緩存文件存在,則從數據庫中提取內容。
Opera顯示一個空白頁面,提交快速測試無法識別頁面。我幾乎可以肯定,.htaccess文件與這個問題無關。下面的代碼是我認爲問題存在的地方。
<?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();
}
}
有很多在這個文件怎麼回事,我試圖切出儘可能多的東西,儘可能地消除混淆。任何幫助顯然非常感謝!提前致謝!
你會考慮提供一個鏈接,在其他瀏覽器中顯示好,但在Opera中失敗嗎? – 2012-03-21 17:16:02
對不起,我不能......保密的原因。 – NotJay 2012-03-21 17:20:28
Welp,這很可能是一個HTTP錯誤。一些HTTP客戶端(瀏覽器)比其他客戶更寬容。 – 2012-03-21 17:35:42