web-dev-qa-db-fra.com

Est-il courant d’alimenter les robots d'exploration Googlebot et Bingbot avec des données "spéciales" dans les applications Internet riches?

Je me suis donc heurté au problème suivant: mon serveur et mon client d'application Internet riche (RIA) utilisent/génèrent tellement de données JSON qui sont restituées à la volée même lors de la création de la page. Ce crawler standard ne devrait pas voir beaucoup de données sur mon site. . Je connais l'amélioration progressive et JavaScript discret, mais ils (les robots) ont tendance à ne pas utiliser JS du tout. Même mon téléphone mobile peut faire une telle chose!).

Je peux toujours ouvrir chrome ou une application Adobe Air telle que Scout et obtenir le code HTML analysé ainsi que tous les liens dont il dispose.

Démo (html terne):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<html>

    <head>
        <title>Cloud Server Services Selection Menu</title>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
        <meta name="description" content="Services List" />
        <meta name="keywords" content="art, navigation, C++, services, web, web-services, exibition" />
        <meta name="author" content="CF2011" />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <!-- End Of Info-->

        <!-- CF CSS -->
        <!--[if gte IE 9]>
                <style type="text/css">
                    .gradient {
                        filter: none;
                    }
                </style>
        <![endif]-->
        <link rel="stylesheet" href="css/cf.css">
        <link rel="stylesheet" href="css/cf.index.application.css">
        <!-- End of CF CSS-->  

        <!-- Public JS-->
        <script type="text/javascript" src="js/jquery-1.7.1.min.js">                                
        </script>

        <script type="text/javascript" src="js/tempo.min.js">                                   
        </script>
        <!-- End Of Public JS-->

        <!-- CF JS -->
        <script type='text/javascript' src="js/cf.js"></script>

        <!-- End Of CF JS-->
    </head>
    <body>
        <div class="container">
            <div>
                <h1 class="head"><a href="#"><p>Cloud Server<span>Exhibition of Public Services &amp; Their Interaction</span></p></a></h1>
            </div>
            <div>
                <ol id="marx-brothers3">
                    <div data-template>
                        <ul class="ca-menu">
                        <li>
                            <a href="{{url}}">
                                <!--<span class="ca-icon"><p>{{icon}}</p></span> -->
                                <div class="ca-content">
                                    <h2 class="ca-main">{{name}}</h2>
                                    <h3 class="ca-sub">{{description}}</h3>
                                </div>
                                </a>
                        </li>
                        </ul>
                    </div>
                    <li data-template-fallback>
                        Sorry, JavaScript required!
                    </li>
                </ol>
           </div>
           <div>

           </div>
        </div>

        <script type="text/javascript">
            $(document).ready(function() {
               var services = Tempo.prepare('marx-brothers3');
                        services.starting();

                $.getJSON("server.json", function(data) {
                    services.render(data);
                });
            });
        </script>
    </body>
</html>

Données analysées avec les balises de script supprimées:

<html lang="en"><head>
        <title>Cloud Server Services Selection Menu</title>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
        <meta name="description" content="Services List">
        <meta name="keywords" content="art, navigation, C++, services, web, web-services, exibition">
        <meta name="author" content="CF2011">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <!-- End Of Info-->

        <!-- CF CSS -->
        <!--[if gte IE 9]>
                <style type="text/css">
                    .gradient {
                        filter: none;
                    }
                </style>
        <![endif]-->
        <link rel="stylesheet" href="css/cf.css">
        <link rel="stylesheet" href="css/cf.index.application.css">
        <!-- End of CF CSS-->  
        </head>
    <body cz-shortcut-listen="true">
        <div class="container">
            <div>
                <h1 class="head"><a href="#"><p>Cloud Server<span>Exhibition of Public Services &amp; Their Interaction</span></p></a></h1>
            </div>
            <div>
                <ol id="marx-brothers3">

                    <li data-template-fallback="" style="display: none; ">
                        Sorry, JavaScript required!
                    </li>
                <div data-template="">
                        <ul class="ca-menu">
                        <li>
                            <a href="images.html">
                                <!--<span class="ca-icon"><p>default_service_icon.png</p></span> -->
                                <div class="ca-content">
                                    <h2 class="ca-main">Image Renderer Service</h2>
                                    <h3 class="ca-sub">Service for images rendering, transcoding, mapping.</h3>
                                </div>
                                </a>
                        </li>
                        </ul>
                    </div><div data-template="">
                        <ul class="ca-menu">
                        <li>
                            <a href="observer.html">
                                <!--<span class="ca-icon"><p>default_service_icon.png</p></span> -->
                                <div class="ca-content">
                                    <h2 class="ca-main">Observer Service</h2>
                                    <h3 class="ca-sub">Demo service for public video conferencing, it does not require user account and its free!</h3>
                                </div>
                                </a>
                        </li>
                        </ul>
                    </div><div data-template="">
                        <ul class="ca-menu">
                        <li>
                            <a href="ufs.html">
                                <!--<span class="ca-icon"><p>default_service_icon.png</p></span> -->
                                <div class="ca-content">
                                    <h2 class="ca-main">Users Files Service</h2>
                                    <h3 class="ca-sub">Service for user personal and publicly avaliable files storing and managing.</h3>
                                </div>
                                </a>
                        </li>
                        </ul>
                    </div></ol>
           </div>
           <div>

           </div>
        </div>
<div id="cf-footer" style="position:fixed;min-height:20px;height:auto !important;height:20px;background-color:#3f3b8d;background-color:rgba(0,0,0,0.6);bottom:0; width:100%"><p id="cf-footer-paragraph" style="font-size: 8pt"> Copyright © 2012 <a id="rol" href="#cloudobserver" onclick="{  newwindow=window.open('http://code.google.com/p/cloudobserver/','CloudObserver','height=750,width=900');    if (window.focus) {newwindow.focus()}}">Cloud Forever</a>. Some rights reserved. </p><div></div></div></body></html>

Si je sauvegarde ces données analysées et les ouvre dans un navigateur, je verrai tout ce que verra un utilisateur réel et tout ce que je veux que les robots d'exploration voient.

Je me vois déjà créer un service basé sur l'API de navigateur chrome qui fonctionnera comme un service de fichiers normal pour les utilisateurs habituels et qui enverrait des pages HTML rendues aux robots d'exploration. De tels services existent-ils déjà? Est-ce que quelqu'un les utilise? Quel pourrait être l'opinion de l'auteur des robots sur de tels services?

3
myWallJSON

Google a n guide complet pour rendre AJAX sites Web explorables

La technique à laquelle vous faites référence est la "création d'instantanés HTML", qui est décrite dans le guide.

2
Stephen Ostermiller