web-dev-qa-db-fra.com

Mon contenu ajax est-il explorable avec la méthode Masonry Append?

Remarque rapide: je ne pouvais pas décider quelle section poser cette question sur - Webmasters ou DONC mais considérant qu'il s'agit davantage d'un référencement, j'ai décidé de le poster ici, alors pardonnez-moi si j'ai effectivement commis cette erreur.

Donc, j’utilise le plugin Masonry pour donner une certaine flexibilité à certaines de mes dispositions d’éléments (toutes les raisons pour lesquelles ce plugin serait utilisé) ... mais j’ai maintenant décidé d’aller un peu plus loin et d’essayer la méthode append. charger un fichier php externe quand quelqu'un clique sur un bouton LOAD MORE (je suppose que cette méthode est aussi une sorte de "charge paresseuse" qui est la moitié de la raison pour laquelle je voulais aller avec cette approche).

Après des heures d’essais/de recherches sur les moyens de le faire (pour une raison quelconque, de nombreuses solutions sur SO ne fonctionnaient pas pour moi et j’avais aussi l’impression que la documentation de la maçonnerie n’expliquait pas bien), j’ai fini par comprendre avec le code suivant:

$('#towns').masonry({
columnWidth: '.grid-sizer',
itemSelector: '.town',
Gutter: '.Gutter-sizer',
percentPosition: true
});                     

$('.loadmore').click(function(){
$.get('inc/towns.php', function( data ) {       
    var $moreBlocks = $( data ).filter('.town');
    $('#towns').append( $moreBlocks );      
    $('#towns').masonry( 'appended', $moreBlocks);
});
$('.loadmore').addClass("active");

});

Maintenant, mon souci de référencement est, lorsque je charge le contenu de towns.php et que je clique sur Afficher la source, ces éléments ne figurent pas dans le code source. J'ai lu en ligne que c'est parce que le code source montre la page quand elle a été chargée pour la première fois (pas de manière dynamique après avoir chargé plus de contenu) et quelqu'un a dit en ligne (désolé je ne trouve pas les liens vers ces sites) si vous faites un clic droit pour inspecter élément et peut voir le contenu chargé en ajax, alors le contenu est vraiment "là" ... donc explorable par les SE. Cependant, je ne suis pas convaincu. Je me suis toujours dit, si ce n'est pas dans le code source, alors ce n'est pas là pour être exploré.

BTW - Je suppose que le contenu chargé ajax et le contenu ajouté/ajouté est pratiquement la même chose?

L’autre jour (14 octobre 2015), un article de Google expliquant Rendre AJAX applications explorables était obsolète. C'est une lecture intéressante (évidemment) et je pense toujours que certains des points évoqués dans cet article sont toujours valables. Google a déclaré:

"Ce que voit l'utilisateur, ce que voit le robot d'exploration"

Je ne sais pas si mes yeux fatigués causent une décoloration cérébrale, mais l'expression "ce que l'utilisateur voit, ce que voit le robot d'exploration" ne semble pas tout à fait correcte, car plus bas dans l'article, ils mentionnent que si le contenu ne peut pas être vu dans le code source, alors que le contenu ne peut pas fondamentalement être exploré.

Donc le contenu ajouté = PEUT être vu par l'utilisateur.

Toutefois, le contenu ajouté NE PEUT PAS être vu dans le code source, il n'est donc pas disponible pour l'exploration.

Il semble donc que leur politique consistant à "Ce que l'utilisateur voit, ce que voit le robot d'exploration" n'est pas tout à fait vraie ou tout simplement très vague (je peux me tromper).

Je pense que ce que Google voulait vraiment dire quand ils disaient "ce que l'utilisateur voit, ce que voit le robot d'exploration" ne s'applique qu'à quelqu'un qui surfe sur votre site web avec javascript désactivé (ce genre d '"utilisateur" - ne pouvant pas voir le contenu chargé dynamiquement, car JS désactivé). Même si "Rendre les applications AJAX explorables" est obsolète, je pense que cela reste valable.

Plus bas dans cet article, ils mentionnent le terme "instantané HTML". Corrigez-moi si je me trompe, mais en un mot, disent-ils que nous devrions mettre un lien caché vers le fichier de contenu contrôlé par ajax pour que les SE puissent suivre et ramper? Puis, plus tard, ils parlent d'un "accord entre le robot et le serveur" qui, pour être honnête, ne comprend pas tout à fait cette partie de la chose, mais je suppose que cela ne s'applique pas à mon lien "towns.php".

Ceci est le lien vers l'explication officielle concernant le "Deprecating our AJAX crawling scheme" "

et dans cet article se trouve un lien (désolé, je ne peux pas publier plus de 2 liens avec mon représentant) vers un autre article de Google concernant "mieux comprendre les pages Web".

Après avoir lu tout cela et tout ce qui a été dit ... À quoi ressemble ma situation en ce qui concerne le contenu ajouté à la maçonnerie pouvant être exploré, maintenant que NOUVEAUX algorithmes existent? Dois-je prendre des mesures supplémentaires pour le rendre convivial pour le référencement, comme ajouter une URL cachée (ou est-ce que je me suis trompé complètement)? Je me sens juste comme ce sujet est un peu vague en tant que tout (probablement aussi parce que je suis un noob à javascript). J'imagine que cela pourrait être utile à beaucoup d'autres utilisateurs de maçonnerie.

Appréciez votre aide d'avance.

2
user3364730

Google ne peut pas explorer si

  • le chargement du contenu est déclenché par une action de l'utilisateur, comme un événement de souris, ou i.e. onerror d'une image absente,
  • les javascripts sont fermés pour l'exploration avec robots.txt,
  • javascript charge le contenu après un très long délai d'attente

Dans d'autres cas, comme dans votre cas, si Google dispose d'un accès en lecture à des javascripts et à des javascripts, il peut analyser le contenu. Si towns.php sera analysé, une autre question se pose. Cela dépend si towns.php et /inc/ sont fermés par robots.txt contre l'analyse.

Le meilleur moyen de vérifier consiste à publier un exemple, à le récupérer en tant que Google dans la console de recherche, puis à consulter le cache de Google: le contenu analysé/indexé doit être présent.

1
Evgeniy

Le "Contrat" ​​mentionné par Google est le suivant: Vous ajoutez cette ligne dans votre tête html:

<meta fragment="#">

Lorsque le robot "voit" cette balise, il demande à la même page d’ajouter le paramètre? _Escaped_fragment_ =. Donc, si le robot arrive à

http://example.com/post/1

et ce site inclut la balise méta fragment, il modifiera la requête comme

http://example.com/post/1?_escaped_fragment_=

et utiliser le contenu renvoyé par cette demande pour analyser le site. Vous devez donc fournir la page complète sans chargement par la charge lorsque le paramètre existe. Dans votre cas, vous pouvez simplement restituer tout le contenu de la page (côté serveur, par exemple avec PHP) lorsque le paramètre est présent et inclure le mécanisme de chargement différé uniquement lorsque le paramètre n'est pas présent.

0
user57401