サイトの静態化


SEOの普及に伴い,静態化はウェブサイト開発に必要な技術の一つとなっている.Webデザインでは、Webサイトの静的化には通常、擬似静的、実質的な静的ページ、最後の方法はpathinfo技術の3つの方法が実現されます.
ぎじせいじょうたいでapacheサーバであれば通過する.htaccessファイルで操作します.IISサーバの場合はhttpdを経由する.iniとrewrite.dllで実現します.擬似静的処理のキーテクノロジーは、プロファイルのルールがどのように有効に制御され、htmlページに対応するかであり、ルールが変更されると、htmlページのリンクもルールに応じて動的に変更する必要があります.バックグラウンドにルールを設定、書き込む.htaccessファイルは、ルールに基づいてphp言語のルールを生成すると、phpプログラムにルールに基づいてページの異なる内容が表示されます.この方式の難点はhtaccessファイルの徹底的な理解と応用,php正規表現の柔軟な運用にある.このように変換された静的ページの経路には2つの表現形式があり、1つは非常に規則的で、例えば1つの文章、articleである.php?artid=12である、静的ページに変換すると、article-do-view-artid-12となる可能性がある.html.各ページにはアクションとオブジェクトが必要であるため、統一管理が容易である、article/do/view/artid/12として表すこともできる.htmlなど.この形式はhtaccessファイルに一言書くだけでグローバルを制御できます.それはRewrite Rule^([^-]*)-(.*)$1です.php?$2 .このように,ルール全体に1つのルールしかなく,プログラムで行うべきことは$2号の文字列のみを処理することであり,比較的簡単である.第二に、形式は相対的に人間的な点であり、美の観点では、接続形式をarticle/12に変換しなければならない.htmlまたはarticle/hello-world.htmlまたはarticle/hello-world_page2.html、このように各接続を処理するには、article/(.*)(_page[0-9]).htmlというルールは、rewriteのルールをphpの正則に解析して置き換えるため、処理上かなり難しい.また、これらのルールはrewriteとphpに詳しいプログラマーが書かなければならず、普及に不利である.静的ページは、ディレクトリアドレスをデータベースに保存する呼び出しであるが、登録情報、文章クリック数などの動的な情報は、主にjsと静的ページを再生成することによって表示される.ここでは、静的ページを生成する2つの方法を示します.
一、ob関数によってブラウザ出力を制御する.
ob_start(); 
include template('index'); 
$data = ob_get_contents(); 
ob_clean(); 
file_put_contents($filename, $data); 

二、このページのアドレスを事前に知ることで、ページでキャプチャする.
function create_html($filepath, $phpfile, $page = 1){ 
       global $siteurl; 
       $filepath = ROOT.$filepath; 
       $htmlpath = substr($filepath,0,strrpos($filepath,"/")); 
       if(!is_dir($htmlpath))makeDirs($htmlpath); 
       $contents = dfile_get_contents($siteurl.$phpfile); 

       dfile_put_contents($filepath, $contents);

} 

擬似静的の利点は、静的ファイルに比べて静的ページのコンテンツを生成または制御するために追加のスクリプトを必要とせず、サーバスペースを占有しない柔軟性にあります.サーバ内部解析のアドレスなので、内容はリアルタイムで更新され、ファイル管理やハードウェアの問題もなく、メンテナンスが便利です.サーバレベルURL Rewriteでの書き換え技術は、ページの実行速度に影響を与えない.しかし、URL Rewriteは敷居が高く、国内の仮想ホストの多くはサポートされていない.また、仮想ホストはディレクトリレベルのurl Rewriteであり、ディレクトリ読み物URL転送ルールを巡ることでページの実行速度を大幅に低下させる.静的ページの利点は、動的解析プロセスが少なく、ページへのアクセス速度と安定性が向上し、最適化効果が非常に顕著になることです.データベースとサーバのソフトウェアリソースにかかるコストが少ない.しかし、サーバのハードウェアリソースを占有し、大規模なウェブサイトにとって、この方法は無視できない後続の問題をもたらす:生成されたファイルの数が多いため、ストレージはファイル、フォルダの数の問題とディスク空間容量の問題を考慮する必要があり、大量のサーバ設備が必要である.プログラムは頻繁にサイトの中の大きな領域の内容を読み書きし、ディスク損傷の問題とそれによる事故の防止と回復を考慮し、ハードウェア損失は更新し、サイトのバックアップは所定の位置に置かなければならない.ページメンテナンスの複雑さと大きな作業量、およびもたらしたページメンテナンスのタイムリーな問題は、サイト更新制度と専門的なサイトメンテナンス人員のセットが必要である.第3の方法では、php業界で流行しているフレームワーク、例えばzend、thinkphpは応用が多く、結局、彼らはいくつかの条件の下で欠けていない.htaccessというファイルは、すべての接続(画像、js、cssを除く)をindexに向けることを目的としているからです.phpというファイル.ここで用いられる主な技術の一つはpathinfoであり,pathinfoの原理については,ここではあまり議論しない.この技術と使用htaccess技術の違いは使用していないことにある.htaccessファイルは、くだらないことを言っているようですが、注意が必要です.そのため、控訴理由を総合すると、一般企業のウェブサイト、個人のウェブサイトについて、これらのウェブサイトの情報はWebデザインで、いったん発表されると変更が少なく、ウェブサイトの情報量が多くない場合、しかも一般的に仮想ホストを使用して、静的なページを生成する方法を選択することができると考えています.大規模なWebサイトでは、情報量が大きく、独立したサーバを備えており、URL Rewriteを採用することができます.一部の中型サイトでは、仮想ホストを使用する場合は静的ページを生成する方式を採用しており、条件付きでサーバを購入する場合は具体的なサイトのタイプによって異なり、サイトのインタラクティブ性が強く、局所的な更新内容が多い場合はRewriteを採用することができ、ページの内容が固定されている場合は静的ページ生成技術を使用すると効果的である.
 
擬似静的は相対的に現実的な静的である.通常、私たちはサーバの圧力をよりよく緩和し、検索エンジンの友好面を強化するために.文章の内容を静的ページに生成する.しかし、いくつかの情報をリアルタイムで表示する場合がある.あるいはダイナミックスクリプトを用いていくつかの問題を解決したい.静的な方法でウェブサイトの内容を展示することはできない.しかし、これは検索エンジンへの友好を損なった.どのように両者の間に中間方法を探すか、これは偽静的技術を生み出した.
 
次に、擬似静的アドレスと反転擬似静的アドレスを生成する2つの関数を示します.この2つの関数は、対応する位置で参照することで実現できます.http://www.zhongya.cn/certificate_page.php?clid=22
こんな風にhttp://www.zhongya.cn/certificate_page.php/clid_22.htm形式.
/******************************
    :
  http://www.zhongya.cn/company/companyshow.php?action=list&page=2 
    http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm  

$url="http://www.zhongya.cn/company/companyshow.php?action=list&page=2";
$urlStr=MakeUrlHtml($url);
echo $urlStr;
*****************************/
function MakeUrlHtml($url){
	$durl=parse_url($url);
	$urlStr="";
	if($durl['host']) $urlStr.=$durl['scheme']."://".$durl['host'];
	if($durl['path']) $urlStr.=$durl['path'];
	if($durl["query"]){
		$durl=explode("&",$durl["query"]);
		foreach($durl as $surl){
			$gurl=explode("=",$surl);
			$eurl[]=$gurl[0]."_".$gurl[1];
		}
		$tmpurl=join("/",$eurl).".htm";
		$urlStr.="/".$tmpurl;
	}
	return $urlStr;
}

/******************************
   :           $_GET  
    :
  http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm  
   $_GET["action"]=list/$_GET["page"]=2
ParseUrl();
*****************************/
function ParseUrl(){
	if($_SERVER['PATH_INFO']!=""){
		$pathinfo=substr($_SERVER['PATH_INFO'],1);
		$pathinfo=str_replace(".htm","",$pathinfo);
		$tmp=explode("/",$pathinfo);
		foreach($tmp as $val){
			$path=explode("_",$val);
			$count=count($path);
			for($i=0;$i<$count;$i+=2){
				$_GET[$path[$i]]=$path[$i+1];
			}
		}
	}
}