ページの静的化の一般的な方法をいくつかマスターしましょう
ページの静的化は 2 つのタイプに分けられ、1 つは擬似静的、つまり URL の書き換えであり、もう 1 つは真の静的であるとよく言われます。真の静的化に焦点を当てましょう。
PHP の静的化とは
PHP の静的化を簡単に理解すると、Web サイトで生成されたページを静的な HTML の形式で訪問者に表示させることです。PHP の静的化は、純粋な静的化と静的 HTML の 2 つに分けられます。 2 つの違いは、PHP が静的ページを生成するために使用する処理メカニズムの違いにあります。
Web ページを静的にする必要があるのはなぜですか?
1. ページを開く速度と閲覧速度を高速化します。静的なページはデータベースに接続する必要がなく、開く速度が大幅に速くなります。動的ページ;
2. SEO、Baidu、Google は静的ページを優先的に含めます。これは、迅速に含められるだけでなく、完全に含められます。サーバーは、システム データベースを呼び出さずに Web を閲覧します。
4. Web サイトはより安全であり、HTML ページは PHP 関連の脆弱性の影響を受けません。大規模な Web サイトは基本的に静的なページであるため、攻撃を減らすことができます。 SQL インジェクションを防ぎます。
データベースエラーが発生しても、Web サイトへの通常のアクセスには影響しません。
HTML 記事を生成する作業はより面倒で手順が複雑になりますが、検索をより便利に、より速く、より安全にするには、これらの犠牲を払う価値があります。
PHP で静的 HTML ページを生成する方法
PHP テンプレートを使用して静的ページを生成する
PHP テンプレートを使用して静的化を実現すると、インストールなどで非常に便利ですまた、PHP Smarty を使用して Web サイトを実装すると、静的にするために、さまざまな CMS テンプレートを模倣できる独自のテンプレート解析ルールのセットを作成することもできます。
1. PHP ファイルの読み取りおよび書き込み関数と ob キャッシュ メカニズムを使用して静的ページを生成します。
たとえば、製品の動的詳細ページのアドレスは http://xxx です。 com?goods.php? gid=112
ここでは、このアドレスに基づいてこの詳細ページのコンテンツを読み取り、次回誰かがこの商品詳細ページの動的アドレスにアクセスしたときに、それを静的ページとして保存します。
生成されたコンテンツを直接保存できます。対応する静的コンテンツ ファイルが出力されます。
<!--?<span style="color: #000000;">php</span><span style="color: #800080;">$gid</span> = <span style="color: #800080;">$_GET</span>['gid']+0;<span style="color: #008000;">//</span><span style="color: #008000;">商品id</span><span style="color: #800080;">$goods_statis_file</span> = "goods_file_".<span style="color: #800080;">$gid</span>.".html";<span style="color: #008000;">//</span><span style="color: #008000;">对应静态页文件</span><span style="color: #800080;">$expr</span> = 3600*24*10;<span style="color: #008000;">//</span><span style="color: #008000;">静态文件有效期,十天</span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$goods_statis_file</span><span style="color: #000000;">)){ </span><span style="color: #800080;">$file_ctime</span> =<span style="color: #008080;">filectime</span>(<span style="color: #800080;">$goods_statis_file</span>);<span style="color: #008000;">//</span><span style="color: #008000;">文件创建时间 </span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$file_ctime</span>+<span style="color: #800080;">$expr</span>--><span style="color: #008080;">time</span>()){<span style="color: #008000;">//</span><span style="color: #008000;">如果没过期</span> <span style="color: #0000ff;">echo</span> <span style="color: #008080;">file_get_contents</span>(<span style="color: #800080;">$goods_statis_file</span>);<span style="color: #008000;">//</span><span style="color: #008000;">输出静态文件内容</span> <span style="color: #0000ff;">exit</span><span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span>{<span style="color: #008000;">//</span><span style="color: #008000;">如果已过期</span> <span style="color: #008080;">unlink</span>(<span style="color: #800080;">$goods_statis_file</span>);<span style="color: #008000;">//</span><span style="color: #008000;">删除过期的静态页文件</span> <span style="color: #008080;">ob_start</span><span style="color: #000000;">(); </span><span style="color: #008000;">//</span><span style="color: #008000;">从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span style="color: #800080;">$content</span> = <span style="color: #008080;">ob_get_contents</span>();<span style="color: #008000;">//</span><span style="color: #008000;">把详情页内容赋值给$content变量</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">$goods_statis_file</span>,<span style="color: #800080;">$content</span>);<span style="color: #008000;">//</span><span style="color: #008000;">写入内容到对应静态文件中</span> <span style="color: #008080;">ob_end_flush</span>();<span style="color: #008000;">//</span><span style="color: #008000;">输出商品详情页信息</span><span style="color: #000000;"> }}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #008080;">ob_start</span><span style="color: #000000;">(); </span><span style="color: #008000;">//</span><span style="color: #008000;">从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span style="color: #800080;">$content</span> = <span style="color: #008080;">ob_get_contents</span>();<span style="color: #008000;">//</span><span style="color: #008000;">把详情页内容赋值给$content变量</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">$goods_statis_file</span>,<span style="color: #800080;">$content</span>);<span style="color: #008000;">//</span><span style="color: #008000;">写入内容到对应静态文件中</span> <span style="color: #008080;">ob_end_flush</span>();<span style="color: #008000;">//</span><span style="color: #008000;">输出商品详情页信息</span><span style="color: #000000;">}</span>?>2. nosql を使用してメモリからコンテンツを読み取ります (実際、これは静的ではなくキャッシュされています)。 例として、次のようにします。 🎜>
<!--?<span style="color: #000000;">php</span><span style="color: #800080;">$gid</span> = <span style="color: #800080;">$_GET</span>['gid']+0;<span style="color: #008000;">//</span><span style="color: #008000;">商品id</span><span style="color: #800080;">$goods_statis_content</span> = "goods_content_".<span style="color: #800080;">$gid</span>;<span style="color: #008000;">//</span><span style="color: #008000;">对应键</span><span style="color: #800080;">$expr</span> = 3600*24*10;<span style="color: #008000;">//</span><span style="color: #008000;">有效期,十天</span><span style="color: #800080;">$mem</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Memcache; </span><span style="color: #800080;">$mem</span>--->connect('memcache_host', 11211<span style="color: #000000;">);</span><span style="color: #800080;">$mem_goods_content</span> = <span style="color: #800080;">$mem</span>->get(<span style="color: #800080;">$goods_statis_content</span><span style="color: #000000;">);</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$mem_goods_content</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$mem_goods_content</span><span style="color: #000000;">;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #008080;">ob_start</span><span style="color: #000000;">(); </span><span style="color: #008000;">//</span><span style="color: #008000;">从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span style="color: #800080;">$content</span> = <span style="color: #008080;">ob_get_contents</span>();<span style="color: #008000;">//</span><span style="color: #008000;">把详情页内容赋值给$content变量</span> <span style="color: #800080;">$mem</span>->add(<span style="color: #800080;">$goods_statis_content</span>,<span style="color: #800080;">$content</span>, <span style="color: #0000ff;">false</span>, <span style="color: #800080;">$expr</span><span style="color: #000000;">); </span><span style="color: #008080;">ob_end_flush</span>();<span style="color: #008000;">//</span><span style="color: #008000;">输出商品详情页信息</span><span style="color: #000000;">}</span>?>Memcached では、キーと値の間に 1 対 1 の対応関係があり、デフォルトの最大キー サイズは 128 バイトを超えることはできず、値のデフォルト サイズは 1M です。このサイズは、ほとんどの Web ページのストレージのニーズを満たすことができます。 上記はページの静的化に関連する方法です。友人の役に立てば幸いです
優れた技術記事は毎日更新され、すべて www.phpskill.com
PHP 純粋技術学習交流グループ: 323899029
原文: http://www.phpskill.com/ html/show-1 -4418-1.html