ホームページ  >  記事  >  バックエンド開発  >  いくつかの一般的なページ静的化の手順をマスターする

いくつかの一般的なページ静的化の手順をマスターする

WBOY
WBOYオリジナル
2016-06-13 12:13:33964ブラウズ

ページの静的化の一般的な方法をいくつかマスターしましょう

ページの静的化は 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

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