目次
1. ページ出力の最適化方法
2. ページ出力は検索エンジンと互換性があります
##3. コードを完成させてテストします
ホームページ バックエンド開発 PHPチュートリアル php最適化、検索エンジンロボットアクセス対応のページ出力例の解説

php最適化、検索エンジンロボットアクセス対応のページ出力例の解説

Jun 20, 2018 pm 05:08 PM
php 検索エンジン

PHP を使用してページを出力する場合、ページに多くのコンテンツが含まれる場合、ユーザーはページのコンテンツを表示する前にページのすべてのコンテンツがロードされるまで待つ必要があります。

1. ページ出力の最適化方法

ページ コンテンツをいくつかの部分に分割し、いずれかのコンテンツが正常に読み込まれたときに、それらを非同期同時リクエストで読み込むことができます。コンテンツの他のチャンクが読み込まれるのを待つ必要がなく、すぐに表示されます。
このようにして、コンテンツが正常に読み込まれていれば、ユーザーはすぐにそれを見ることができ、ユーザー エクスペリエンスが向上します。

したがって、ページ内に js コンテンツを保持し、ajax を使用して API にコンテンツのロードと表示をリクエストするだけで済みます。

<!-- 分块1 --><p id="result1"></p><script type="text/javascript">$(function() {
  $.get("api.php?id=1", {}, function(ret) {
    $("#result1").html(ret["html"]);
  },"json");
});</script><!-- 分块2 --><p id="result2"></p><script type="text/javascript">$(function() {
  $.get("api.php?id=2", {}, function(ret) {
    $("#result2").html(ret["html"]);
  },"json");
});</script><!-- 分块3 --><p id="result3"></p><script type="text/javascript">$(function() {
  $.get("api.php?id=3", {}, function(ret) {
    $("#result3").html(ret["html"]);
  },"json");
});</script>...
ログイン後にコピー

php最適化、検索エンジンロボットアクセス対応のページ出力例の解説

コンテンツの非同期および同時読み込みにより、ページ出力が大幅に高速化されます。

2. ページ出力は検索エンジンと互換性があります

非同期同時読み込みを使用してページを出力すると、検索しにくくなります。コンテンツは ajax を使用して読み込まれるため、検索エンジンによって収集されます。

したがって、検索エンジン ロボットによってアクセスされているかどうかを判断し、非同期および同時出力ページを使用する代わりにページ コンテンツを直接出力する必要があります。

検索エンジン ロボットがアクセスするかどうかを判断する方法

<?php// 判断是否搜索引擎机器人访问function isRobot() { 
    $agent= strtolower(isset($_SERVER[&#39;HTTP_USER_AGENT&#39;])? $_SERVER[&#39;HTTP_USER_AGENT&#39;] : &#39;&#39;); 
    if(!empty($agent)){ 
        $spiderSite= array( 
            "TencentTraveler", 
            "Baiduspider+", 
            "BaiduGame", 
            "Googlebot", 
            "msnbot", 
            "Sosospider+", 
            "Sogou web spider", 
            "ia_archiver", 
            "Yahoo! Slurp", 
            "YoudaoBot", 
            "Yahoo Slurp", 
            "MSNBot", 
            "Java (Often spam bot)", 
            "BaiDuSpider", 
            "Voila", 
            "Yandex bot", 
            "BSpider", 
            "twiceler", 
            "Sogou Spider", 
            "Speedy Spider", 
            "Google AdSense", 
            "Heritrix", 
            "Python-urllib", 
            "Alexa (IA Archiver)", 
            "Ask", 
            "Exabot", 
            "Custo", 
            "OutfoxBot/YodaoBot", 
            "yacy", 
            "SurveyBot", 
            "legs", 
            "lwp-trivial", 
            "Nutch", 
            "StackRambler", 
            "The web archive (IA Archiver)", 
            "Perl tool", 
            "MJ12bot", 
            "Netcraft", 
            "MSIECrawler", 
            "WGet tools", 
            "larbin", 
            "Fish search", 
        ); 
        foreach($spiderSite as $val){ 
            $str = strtolower($val); 
            if(strpos($agent, $str) !== false){ 
                return true; 
            } 
        } 
    }    return false; 
} 
?>
ログイン後にコピー


##3. コードを完成させてテストします

index.php アクセスされていました

<?phprequire &#39;server.php&#39;;// 获取内容$data1 = getData(1);$data2 = getData(2);$data3 = getData(3);// 调用模版include dirname(__FILE__).&#39;/template.php&#39;;?>
ログイン後にコピー

template.php ページ テンプレートのコンテンツ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <script src="jquery-1.11.0.min.js"></script>
  <title>内容模版</title>
 </head>

 <body>
    <?php echo $data1; ?>
    <?php echo $data2; ?>
    <?php echo $data3; ?>
 </body></html>
ログイン後にコピー

server.php コンテンツを取得する主なメソッド

<?php//获取数据,正常情况应该读取db,演示只用数组代替function getData($id){

    // 数据
    $data = array(        1 => &#39;很久很久以前,在某个地方,有个很可爱的女孩。不幸的是,她父母双亡,而且家徒四壁,屋里除了一张可供歇息的床以外,就别无长物了。除此之外,她全身上下只剩下身上所穿的衣裳,还有一片好心人施舍给她有面包而已。这个小姑娘,是个心地善良、信心坚定的好女孩。不论境遇有多么凄惨不幸,她仍然深信,慈爱的上帝会默默地庇护着她。&#39;,        2 => &#39;有一天,她只身上原野上去玩。她走着走着,忽然遇到一个衣衫褴褛的男子。他向女孩哀求道:“求求你!施舍一点东西给我这个可伶人吧!我实在是饿得快要受不了了啊!”听到这话,女孩便把自己仅有的那片面包拿出来,说道:“这是上帝的恩 典喔!”说完后, 女孩就继续上路了。走了一会儿,路旁突然出现了一个啼泣不已的男孩。“鸣——我的头好冷呀!就快冻僵了……你能不能施舍一点可以让我挡风的东西啊!”女孩便把自己头上那顶帽子脱了下来, 为男孩戴上。走了不久,她又碰到一个小孩。那孩子没有穿棉背心,冷得直打哆嗦。于是,好心的女孩便把自己的背心送给那个小孩。她继续往前走,突然又遇见另一个小孩。她再次答应对方的乞求,把上衣施舍给他。女孩再往前走,走进森林里。林深日尽,四周一下子变暗了起来。这时,又出现一个可怜的小男孩, 央求女孩把内衣脱给她。这个时候,虔诚又善良的女孩想:“现在天色已经暗下来了,任谁也看不清楚我的模样,就算脱掉内衣,应该无所谓吧!”因此,女孩脱下了内衣,送给乞讨的女孩。&#39;,        3 => &#39;这个时候的女孩,真的是浑身赤裸、再无他物了。忽然间,天上闪烁的星星纷纷坠落,落在女孩的面前。天啊!它们都化成了闪亮耀眼的金币——货真价实的金币!而原先一丝不挂的孩,不知什么时候,竟裹上了一套细致、上等的亚麻衫!于是,这个好心的女孩,把金币捡回家,从此过着富足、快乐的生活。&#39;
    );    $ret = &#39;&#39;;    // 判断是否搜索引擎机器人
    $is_robot = isRobot();    // 搜索引擎机器人访问
    if($is_robot || defined(&#39;FORCE_SYNC_RESPONSE&#39;) && FORCE_SYNC_RESPONSE==true){        $ret .= &#39;<p>&#39;.$data[$id].&#39;</p>&#39;.PHP_EOL;    // 普通用户访问,异步请求
    }else{        $ret = &#39;<p id="result&#39;.$id.&#39;"></p>
        <script type="text/javascript">
        $(function() {
          $.get("api.php?id=&#39;.$id.&#39;", {}, function(ret) {
            $("#result&#39;.$id.&#39;").html(ret["html"]);
          },"json");
        });
        </script>&#39;.PHP_EOL.PHP_EOL;

    }    return $ret;

}// 判断是否搜索引擎机器人访问function isRobot() { 
    $agent= strtolower(isset($_SERVER[&#39;HTTP_USER_AGENT&#39;])? $_SERVER[&#39;HTTP_USER_AGENT&#39;] : &#39;&#39;); 
    if(!empty($agent)){ 
        $spiderSite= array( 
            "TencentTraveler", 
            "Baiduspider+", 
            "BaiduGame", 
            "Googlebot", 
            "msnbot", 
            "Sosospider+", 
            "Sogou web spider", 
            "ia_archiver", 
            "Yahoo! Slurp", 
            "YoudaoBot", 
            "Yahoo Slurp", 
            "MSNBot", 
            "Java (Often spam bot)", 
            "BaiDuSpider", 
            "Voila", 
            "Yandex bot", 
            "BSpider", 
            "twiceler", 
            "Sogou Spider", 
            "Speedy Spider", 
            "Google AdSense", 
            "Heritrix", 
            "Python-urllib", 
            "Alexa (IA Archiver)", 
            "Ask", 
            "Exabot", 
            "Custo", 
            "OutfoxBot/YodaoBot", 
            "yacy", 
            "SurveyBot", 
            "legs", 
            "lwp-trivial", 
            "Nutch", 
            "StackRambler", 
            "The web archive (IA Archiver)", 
            "Perl tool", 
            "MJ12bot", 
            "Netcraft", 
            "MSIECrawler", 
            "WGet tools", 
            "larbin", 
            "Fish search", 
        ); 
        foreach($spiderSite as $val){ 
            $str = strtolower($val); 
            if(strpos($agent, $str) !== false){ 
                return true; 
            } 
        } 
    }    return false; 
} 
?>
ログイン後にコピー

api.php 非同期リクエストに使用される API インターフェース

<?phpdefine(&#39;FORCE_SYNC_RESPONSE&#39;, true); // 强制同步输出require &#39;server.php&#39;;// 获取分块内容$id = isset($_GET[&#39;id&#39;])? $_GET[&#39;id&#39;] : 1;$data = getData($id);// 输出header(&#39;content-type:application/json;charset=utf8&#39;);$ret = json_encode(    array(        &#39;html&#39; => $data
    )
);echo $ret;?>
ログイン後にコピー


通常のユーザー アクセスのテスト
<?php$url = &#39;http://localhost/index.php&#39;; // 访问index.php$header = array();$data = doCurl($url, array(), $header);echo &#39;<meta http-equiv="content-type" content="text/html;charset=utf-8">&#39;;echo &#39;<xmp>&#39;;echo $data;echo &#39;</xmp>&#39;;/**
 * curl请求
 * @param  String $url     请求地址
 * @param  Array  $data    请求参数
 * @param  Array  $header  请求header
 * @param  Int    $timeout 超时时间
 * @return String
 */function doCurl($url, $data=array(), $header=array(), $timeout=30){  

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);    $response = curl_exec($ch);  

    if($error=curl_error($ch)){  
        die($error);
    }  

    curl_close($ch);  

    return $response;
}  
?>
ログイン後にコピー

出力ページ コンテンツ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <script src="jquery-1.11.0.min.js"></script>
  <title>内容模版</title>
 </head>

 <body>
    <p id="result1"></p>

        <script type="text/javascript">
        $(function() {
          $.get("api.php?id=1", {}, function(ret) {
            $("#result1").html(ret["html"]);
          },"json");
        });        </script>
    <p id="result2"></p>

        <script type="text/javascript">
        $(function() {
          $.get("api.php?id=2", {}, function(ret) {
            $("#result2").html(ret["html"]);
          },"json");
        });        </script>
    <p id="result3"></p>

        <script type="text/javascript">
        $(function() {
          $.get("api.php?id=3", {}, function(ret) {
            $("#result3").html(ret["html"]);
          },"json");
        });        </script>
 </body></html>
ログイン後にコピー

非同期同時読み込みを使用してページ出力速度を向上させます。



#検索エンジン ロボット アクセスのテスト
<?php$url = &#39;http://localhost/index.php&#39;; // 访问index.php$header = array(    &#39;user-agent: Googlebot&#39; // 加入搜索引擎关键字);$data = doCurl($url, array(), $header);echo &#39;<meta http-equiv="content-type" content="text/html;charset=utf-8">&#39;;echo &#39;<xmp>&#39;;echo $data;echo &#39;</xmp>&#39;;/**
 * curl请求
 * @param  String $url     请求地址
 * @param  Array  $data    请求参数
 * @param  Array  $header  请求header
 * @param  Int    $timeout 超时时间
 * @return String
 */function doCurl($url, $data=array(), $header=array(), $timeout=30){  

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);    $response = curl_exec($ch);  

    if($error=curl_error($ch)){  
        die($error);
    }  

    curl_close($ch);  

    return $response;
}  
?>
ログイン後にコピー

ページ コンテンツの出力

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <script src="jquery-1.11.0.min.js"></script>
  <title>内容模版</title>
 </head>

 <body>
    <p>很久很久以前,在某个地方,有个很可爱的女孩。不幸的是,她父母双亡,而且家徒四壁,屋里除了一张可供歇息的床以外,就别无长物了。除此之外,她全身上下只剩下身上所穿的衣裳,还有一片好心人施舍给她有面包而已。这个小姑娘,是个心地善良、信心坚定的好女孩。不论境遇有多么凄惨不幸,她仍然深信,慈爱的上帝会默默地庇护着她。</p>
    <p>有一天,她只身上原野上去玩。她走着走着,忽然遇到一个衣衫褴褛的男子。他向女孩哀求道:“求求你!施舍一点东西给我这个可伶人吧!我实在是饿得快要受不了了啊!”听到这话,女孩便把自己仅有的那片面包拿出来,说道:“这是上帝的恩 典喔!”说完后, 女孩就继续上路了。走了一会儿,路旁突然出现了一个啼泣不已的男孩。“鸣——我的头好冷呀!就快冻僵了……你能不能施舍一点可以让我挡风的东西啊!”女孩便把自己头上那顶帽子脱了下来, 为男孩戴上。走了不久,她又碰到一个小孩。那孩子没有穿棉背心,冷得直打哆嗦。于是,好心的女孩便把自己的背心送给那个小孩。她继续往前走,突然又遇见另一个小孩。她再次答应对方的乞求,把上衣施舍给他。女孩再往前走,走进森林里。林深日尽,四周一下子变暗了起来。这时,又出现一个可怜的小男孩, 央求女孩把内衣脱给她。这个时候,虔诚又善良的女孩想:“现在天色已经暗下来了,任谁也看不清楚我的模样,就算脱掉内衣,应该无所谓吧!”因此,女孩脱下了内衣,送给乞讨的女孩。</p>
    <p>这个时候的女孩,真的是浑身赤裸、再无他物了。忽然间,天上闪烁的星星纷纷坠落,落在女孩的面前。天啊!它们都化成了闪亮耀眼的金币——货真价实的金币!而原先一丝不挂的孩,不知什么时候,竟裹上了一套细致、上等的亚麻衫!于是,这个好心的女孩,把金币捡回家,从此过着富足、快乐的生活。</p>
 </body></html>
ログイン後にコピー
ページのコンテンツが直接出力されるため、検索エンジンに優しいです。 この記事では、互換性のある検索エンジン ロボット アクセスの例について説明します。関連コンテンツの詳細については、PHP 中国語 Web サイトを参照してください。


関連する推奨事項:

php を介して ffmpeg を呼び出してビデオ情報を取得する


mysql を使用してポイントが指定されたポリゴン領域の内部


PHP で imagemagick を使用して古い写真効果を実現します


以上がphp最適化、検索エンジンロボットアクセス対応のページ出力例の解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

See all articles