ホームページ  >  記事  >  バックエンド開発  >  PHP ウェブサイトをキャッシュして開く速度を向上させる方法を共有します_PHP チュートリアル

PHP ウェブサイトをキャッシュして開く速度を向上させる方法を共有します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:19:05687ブラウズ

説明:
1. 圧縮ファイルはサーバーにキャッシュされ、再度アクセスすると、再圧縮時間と CPU 使用率が削減されます。
2. クライアント ファイルのキャッシュ時間を設定して再リクエストの数を減らすと、85% 以上削減できます。
3. 画像はすでに圧縮形式であるため、クライアントのキャッシュ時間のみが設定され、圧縮は実行されません。

使用方法:
1. サーバーは gzip および Rewrite 機能をサポートする必要があります。
2. 図
RewriteRule (.*.css$|.*.js$|.*.jpg$|.*.htacess ファイル) の「RewriteBase /」の下の行に次のコードを追加します。 gif$|.* .png$) gzip.php?$1 [L]
3. gzip.php をルート ディレクトリにアップロードします
4. ルート ディレクトリにキャッシュ フォルダーを作成して、読み取りと書き込みが可能であることを確認します。

PHP ウェブサイトをキャッシュして開く速度を向上させる方法を共有します_PHP チュートリアル

コードをコピー コードは次のとおりです:

/**
* @著者セラフィム
* @copyright 2012
*/
//
function sendheader($last_modified, $p_type, $content_length = 0)
{
//クライアントキャッシュの有効期間を設定します
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 15360000) . "GMT"); -age=315360000");
header("Pragma: ");
// 最終更新時刻を設定
header("Last-Modified: " . $last_modified);
// ファイルタイプ情報を設定
header($ p_type);
header("Content-Length: " . $content_length)
define('ABSPATH', dirname(__file__) . '/');
$cachedir = 'cache/' ; //gz ファイルが保存されるディレクトリは書き込み可能である必要があります
if (empty($_SERVER['QUERY_STRING']))
exit();
$gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') ;
if (empty($gzip))
$cache = false;
$key = array_shift('?', $_SERVER['QUERY_STRING'])); ' ', $key);
$filename = ABSPATH;
$symbol = '_'
$rel_path(ABSPATH, '', dirname($filename)); ' , $symbol, $rel_path);
$cache_filename = ABSPATH . $namespace . $symbol .gz' // gz ファイルのパスを生成します
$ext ( ' .', $filename)); //suffix に基づいてファイルタイプ情報を判断します
$type = "Content-type: text/html" //デフォルトのファイルタイプ
switch ($ext)
{
case 'css'; :
$type = "コンテンツ タイプ: text/css";
case 'js':
$type = "コンテンツ タイプ: text/javascript";
$cache = false;
$type = "コンテンツ タイプ: image/gif";
case 'jpg':
$type = "コンテンツ タイプ: image/jpeg"; case 'png':
$cache = false;
$type = "コンテンツタイプ: image/png";
デフォルト:
}
if ($cache)
if (file_exists) ( $cache_filename))
{ // gz ファイルがある場合
$mtime = filemtime($cache_filename)
$gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) ;
if ( (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && array_shift(explode(';', $_SERVER['HTTP_IF_MODIFIED_SINCE'])) ==
$gmt_mtime))
{
// ファイル変更日を使用ブラウザのキャッシュは一貫しており、304
header("HTTP/1.1 304 Not Modified") を返します
//クライアント ヘッダーを送信
sendheader($gmt_mtime, $type);
else
{
// gz ファイル出力を読み取る
$content = file_get_contents($cache_filename)
// クライアント ヘッダーを送信
sendheader($gmt_mtime, $type, strlen($content));
header("Content-Encoding : gzip");
//データを送信
echo $content;
}
}
else
if (file_exists($filename))
{ // 対応する gz ファイルがありません
$mtime = mktime();
$ gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
$content = file_get_contents($filename);
// $ content = ltrim($content);
// ファイルの内容を圧縮
$content = gzencode($content, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE);
// クライアントヘッダーを送信
sendheader($gmt_mtime, $type, strlen() $content));
header("Content-Encoding: gzip");
// データを送信
echo $content;
file_put_contents($cache_filename, $content);
else
header ("HTTP/1.0 404 Not Found");
}
}
else
{ // Gzip モードで出力を処理します。原理は基本的に上記と同じです
if (file_exists($filename))
{
$mtime = filemtime($filename)
$gmt_mtime = gmdate('D, d M Y H:i:s', $mtime); ' GMT';
if ((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && array_shift(explode(';', $_SERVER['HTTP_IF_MODIFIED_SINCE'])) ==
$gmt_mtime))
{
// ファイルありブラウザキャッシュ内 変更日は一致しており、304 が返されます
header("HTTP/1.1 304 Not Modified")
// クライアントヘッダーを送信
sendheader($gmt_mtime, $type, strlen($content)); "Content-Encoding: gzip");
}
else
{
// ファイル出力を読み取る
$content = file_get_contents($filename);
// クライアントヘッダーを送信する
sendheader($gmt_mtime, $type, strlen($content) ));
//データを送信
echo $content;
}
else
header("HTTP/1.0 404 Not Found")
}
}

;



http://www.bkjia.com/PHPjc/325405.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/325405.html

技術記事

注: 1. 圧縮ファイルはサーバーにキャッシュされ、再度アクセスすると、再圧縮時間と CPU 使用率が削減されます。 2. クライアント ファイルのキャッシュ時間を設定して、再リクエストの数を減らします...





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。