この記事では主に PHP で HTML ページを静的化する方法を紹介します。興味のある方はぜひ参考にしてください。
一般に、次の側面から最適化します
動的ページの静的化
データベースの最適化
負荷分散の使用
キャッシュの使用
CDN アクセラレーションを使用する
現在、多くの Web サイトは構築時に静的に処理する必要があります。なぜ Web サイトを静的に処理する必要があるのでしょうか。純粋な静的 Web サイトは、すべての Web ページが独立した HTML ページであることを誰もが知っています。アクセス速度は想像できるとおり、検索に非常に役立ちます。エンジンにもとても優しいです。
純粋な静的 Web サイトは Web サイトにどのように実装されますか?
純粋な静的制作テクノロジーでは、まず Web サイトのページを要約し、いくつかのスタイルに分割してから、これらのページをテンプレートに作成する必要があります。生成する場合は、最初にソース ファイルを読み取り、次に .html で終わる独立したファイルを生成する必要があります。 . ページ ファイルであるため、純粋に静的な Web サイトにはより多くのスペースが必要ですが、実際には、特に中小企業の Web サイトでは、必要なスペースはそれほど大きくありません。技術的に言えば、大規模な Web サイトでは、サイト全体を純粋に静的にする必要があります。は変換が難しく、生成時間が長すぎます。ただし、中小規模の Web サイトでは依然として純粋に静的な比較が使用されており、これには多くの利点があります。
そして、動的 Web サイトはどのように静的に処理されるのでしょうか? ページの静的化とは、動的ページを html/htm 静的ページに変換することを指します。動的ページは通常、管理が非常に簡単な、asp、php、jsp、.net、およびその他のプログラミング言語で記述されます。ただし、Web ページにアクセスする場合、プログラムが最初に Web ページを処理する必要があるため、アクセス速度は比較的遅くなります。静的ページはアクセスが速いですが、管理が困難です。そうすれば、静的ページと動的ページで 2 つのページの利点を組み合わせることができます。
静的処理は Web サイトにどのようなメリットをもたらしますか?
静的ページは、動的ページよりも検索エンジンによってインデックスされやすくなります。
静的ページへのアクセスにはプログラム処理が不要なため、実行速度が向上します。
サーバーの負荷を軽減します。
HTML ページは、Asp 関連の脆弱性の影響を受けません。
静的処理された Web サイトは、静的処理されていない Web サイトよりも安全です。ハッカーはバックグラウンド システムを知らないため、静的 Web サイトは攻撃の第一選択ではありません。静的ページから攻撃することは困難です。前景。同時に、データベースやウェブサイトのプログラムに問題が発生した場合でも、静的に処理されるページが妨げられず、ページが開けなくなることもありません。プログラムやデータの影響によるもの。
検索エンジンのスパイダー プログラムはそのような URL を優先するため、スパイダー プログラムの作業負荷も軽減されます。検索エンジンは現在、動的 URL をクロールして識別できるようになっていると考えていますが、静的 URL を誰でも実行できるようにすることをお勧めします。できるだけ静的にする必要があります。
ここでは主にページの静的化の概念について説明します。お役に立てれば幸いです。
HTMLの静的化とは:
よく言われることですが、ページの静的化は2種類に分けられ、1つは疑似静的、つまりURLの書き換えであり、もう1つは真の静的化です 。
PHP ウェブサイト開発では、ウェブサイトのプロモーションや SEO のニーズに合わせて、ウェブサイト全体または部分的に静的化する必要があります。PHP テンプレートの使用、キャッシュなど、PHP で静的 HTML ページを生成する方法は数多くあります。ページの静的化を実現します。
PHP の静的化 を簡単に理解すると、Web サイトで生成されたページを静的 HTML の形式で訪問者に表示させることです。PHP の静的化は、純粋な静的化と疑似静的化に分けられます。 PHPで生成される静的ページの処理メカニズムが異なります。
PHP 擬似静的: Apache mod_rewrite を使用して URL 書き換えを実装します。
静的 HTML の利点:
1. サーバーの負荷を軽減し、システムデータベースを呼び出さずにWebを閲覧します。
2. Baidu と Google は、静的ページを優先して含めます。
3. ページを高速化します。静的ページを開くためにデータベースに接続する必要がなくなります。
4. Web サイトはより安全になり、HTML ページは PHP プログラムに関連する脆弱性の影響を受けなくなります。 ; 大きな Web サイトを見ると、基本的には静的なページであるため、攻撃が軽減され、SQL インジェクションが防止されます。データベースエラーが発生した場合でも、Web サイトへの通常のアクセスには影響はありません。 5.
データベースエラーが発生しても、Webサイトへの通常のアクセスには影響しません。 最も重要なことは、アクセス速度を向上させ、サーバーの負荷を軽減できることです。データ量が数万、数十万以上になると、どちらが速いのかも簡単にわかります。検索エンジンで見つけられます。 HTML記事を生成する作業はより面倒で手順が複雑になりますが、検索の利便性、より速く、より安全にするには、これらの犠牲を払う価値があります。
基本的なメソッドfile_put_contents()関数PHPの組み込みキャッシュメカニズムを使用してページの静的化を実現します—出力バッファリング
方法 1 : PHP テンプレートを使用して静的ページを生成するPHP テンプレートは、PHP Smarty をインストールして使用して静的な Web サイトを実現するなど、静的化を実現するのに非常に便利です。
Smarty を使用する場合、ページを静的にすることもできます。 Smarty を使用する場合の通常の動的読み取り方法について簡単に説明します。
一般的には次の手順に分かれます:
1. URL を介してパラメータ (ID) を渡します。 3. データを取得した後、表示内容を変更します。表示する必要があるデータを割り当てます。5. 表示テンプレート ファイル。
Smarty の静的化プロセスでは、上記のプロセスに 2 つのステップを追加するだけです。
最初: ob_start() を使用して 1 より前のバッファを開きます。
2 番目: 5 の後に ob_get_contents() を使用してメモリ未出力コンテンツを取得し、次に fwrite() を使用してコンテンツをターゲット HTML ファイルに書き込みます。
上記の説明によると、このプロセスは Web サイトのフロントエンドで実装されますが、コンテンツ管理 (追加、変更、削除) は通常バックグラウンドで実行されます。上記のプロセスを効果的に利用するために、小さな機能を使用できます。つまり、Header() です。具体的な処理としては、プログラムを追加・修正した後、Header()を使ってフォアグラウンドにジャンプしてページをHTML化できるようにし、HTML生成後にバックグラウンド管理側に戻るという2つのジャンプを行います。プロセスは目に見えません。
方法2: PHPファイルの読み書き関数を使用して静的ページを生成する
<?
$out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body></html>";
$fp = fopen("leapsoulcn.html","w");
if(!$fp)
{
echo "System Error";
exit();
}
else
{
fwrite($fp,$out1);
fclose($fp);
echo "Success";
}
?>
出力制御関数(出力制御) キャッシュを使用および制御して静的 HTML ページを生成し、PHP ファイルの読み取りおよび書き込み機能も使用します。 たとえば、商品の動的な詳細ページのアドレスは次のとおりです: http://xxx.com?goods.php?gid=112そこで、ここではこのアドレスに基づいて詳細ページのコンテンツを読み取り、保存します。次に、誰かがこの製品詳細ページの動的アドレスにアクセスすると、生成された対応する静的コンテンツ ファイルを直接出力できます。 PHP は静的ページのサンプル コード 1 を生成します
<? ob_start(); echo "<html>". "<head>". "<title>PHP网站静态化教程</title>". "</head>". "<body>欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法</body>". "</html>"; $out1 = ob_get_contents(); ob_end_clean(); $fp = fopen("leapsoulcn.html","w"); if(!$fp) { echo "System Error"; exit(); } else { fwrite($fp,$out1); fclose($fp); echo "Success"; } ?>
<?php $gid = $_GET['gid']+0;//商品id $goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件 $expr = 3600*24*10;//静态文件有效期,十天 if(file_exists($goods_statis_file)){ $file_ctime =filectime($goods_statis_file);//文件创建时间 if($file_ctime+$expr-->time()){//如果没过期 echo file_get_contents($goods_statis_file);//输出静态文件内容 exit; }else{//如果已过期 unlink($goods_statis_file);//删除过期的静态页文件 ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 ob_end_flush();//输出商品详情页信息 } }else{ ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 ob_end_flush();//输出商品详情页信息 } ?>
Web サイトの開発には PHP が使用されており、実行結果は通常、順番にブラウザーに直接出力されます。 PHPを使用して静的ページを生成するには、出力制御機能を使用してキャッシュ領域を制御し、キャッシュ領域の内容を取得し、静的HTMLページファイルに出力して静的Webサイトを実現する必要があります。
PHP生成静态页面的思路为:首先开启缓存,然后输出了HTML内容(你也可以通过include将HTML内容以文件形式包含进来),之后获取缓存中的内容,清空缓存后通过PHP文件读写函数将缓存内容写入到静态HTML页面文件中。
获得输出的缓存内容以生成静态HTML页面的过程需要使用三个函数:ob_start()、ob_get_contents()、ob_end_clean()。
知识点:
1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。
2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。
3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回False
方法4:使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存);以memcache为例:
<?php $gid = $_GET['gid']+0;//商品id $goods_statis_content = "goods_content_".$gid;//对应键 $expr = 3600*24*10;//有效期,十天 $mem = new Memcache; $mem--->connect('memcache_host', 11211); $mem_goods_content = $mem->get($goods_statis_content); if($mem_goods_content){ echo $mem_goods_content; }else{ ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 $mem->add($goods_statis_content,$content, false, $expr); ob_end_flush();//输出商品详情页信息 } ?>
memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
以上がPHP を使用して HTML ページを静的にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。