Quels sont les problèmes associés à la diffusion de pages avec Content: application / xhtml + xml
De départ récemment, certains de mes nouvelles pages web (XHTML 1.1) sont réglés pour se faire une regex de l'en-tête de demande Accept
et d'envoyer le bon-têtes de réponse HTTP, si l'agent de l'utilisateur accepte XML (Firefox et Safari).
IE (ou tout autre navigateur ne les accepte pas) sera tout simplement obtenir de la plaine text/html
type de contenu.
Google bot (ou de tout autre robot de recherche) ont aucun problème avec cela? Est-il des points négatifs à mon approche, j'ai regardé de plus? Penseriez-vous de cet en-tête sniffer aurait guère d'effet sur la performance?
source d'informationauteur alex
Vous devez vous connecter pour publier un commentaire.
- Je utiliser la négociation de contenu pour basculer entre
application/xhtml+xml
ettext/html
comme vous le décrivez, sans se rendre compte des problèmes avec les moteurs de recherche. Strictement cependant, vous devez prendre en compte les valeurs de q dans l'en-tête accept qui indique la préférence de l'agent utilisateur pour chaque type de contenu. Si un agent utilisateur préfère acceptertext/html
mais accepteapplication/xhtml+xml
comme un autre, alors pour plus de sécurité, vous devriez avoir la page servi commetext/html
.Un problème avec la négociation de contenu (et à fournir un contenu différent/en-têtes, des différents usagers-agents) est serveurs proxy. Compte tenu de la suivante; j'ai couru dans ce retour dans l'Netscape 4 jours et ont été timide du côté serveur renifler depuis.
Un utilisateur télécharge votre page avec Firefox, et obtient un XHTML/XML Type de Contenu. L'utilisateur du fournisseur de services internet a un serveur proxy entre l'utilisateur et de votre site, de sorte que cette page est maintenant mis en cache.
L'utilisateur B, même FAI, les demandes de votre page à l'aide d'Internet Explorer. La demande frappe le proxy d'abord, le proxy dit "hey, j'ai cette page, c'est ici; comme application/xhtml+xml". B l'utilisateur est invité à télécharger le fichier (comme IE télécharger quoi que ce soit envoyé en tant que application/xhtml+xml.
Vous pouvez contourner ce problème en utilisant la L'En-Tête Varycomme décrit dans cette 456 Rue De Berea article. J'ai aussi supposer que les serveurs proxy ont eu un peu plus intelligent sur auto détection de ces choses.
C'est ici où la CF qui est du HTML/XHTML commence à ramper dans. Lorsque vous utilisez la négociation de contenu pour servir d'application/xhtml+xml à un ensemble d'agents, et texte/html pour un autre ensemble d'agents utilisateurs, vous êtes en s'appuyant sur toutes les procurations entre votre serveur et vos utilisateurs à faire un bon comportement.
Même si tous les serveurs proxy du monde entier ont été assez intelligent pour reconnaître l'en-tête Vary (ils ne le sont pas), vous avez encore de composer avec l'ordinateur concierges du monde. Il y a beaucoup de intelligente, talentueuse, et d'informaticiens dans le monde. Il y a de plus pas si les gens intelligents qui passent leurs journées à double-cliquant sur l'installateur d'applications et de penser que "Internet" est que le bleu E dans leur menu. Une erreur de proxy configuré pourrait encore mal les pages en mémoire cache et les en-têtes, vous laissant hors de la chance.
Le seul vrai problème, c'est que les navigateurs afficheront xml analyser les erreurs si votre page contient du code invalide, alors que dans le texte/html ils auront au moins afficher quelque chose de visible.
Il n'y a pas vraiment d'avantage de l'envoi de xml, sauf si vous souhaitez intégrer du svg ou sont en train de faire de traitement de données xml de la page.
Le problème est que vous devez limiter votre balisage de sous-ensemble de HTML et XHTML.
<script/>
est ouverte àtext/html
et l'analyseur va tuer le document jusqu'à la prochaine</script>
).text/html
mode (peut utiliser XML-seulement les caractéristiques mentionnées dans le point précédent, peuvent ajouter des préfixes de nom de balise (PHP DOM parfois ne<default:h1>
).<script>
est CDATA en HTML, mais sérialiseur XML peut sortie<script>if (a && b)</script>
).&
danshref
ou<br>
va complètement briser XML, et faire de votre site semblent travail que dans IE!)J'ai testé l'indexation de mon XML uniquement site. Il a été indexées même si j'ai utilisé
application/xml
type MIME, mais il semble être analysée comme HTML, de toute façon (Google de ne pas indexer le texte qui était dans<[CDATA[ ]]>
sections).Depuis IE ne prend pas en charge le xhtml en tant que application/xhtml+xml, la seule façon d'obtenir de la croix-prise en charge du navigateur est d'utiliser la négociation de contenu. Selon Web Pieuxla négociation de contenu est difficile en raison de la mauvaise utilisation des caractères génériques où les navigateurs web demande de prendre en charge tout type de contenu dans l'existence! Safari et Konquer soutien xhtml, mais seulement ce soutien par un générique, alors que IE ne le supporte pas, mais implique aussi de soutien.
Le W3C recommande que l'envoi du xhtml pour les navigateurs qui le déclarer expressément soutien dans l'en-tête HTTP Accept et ignorer ceux des navigateurs qui ne sont pas spécifiquement déclarer soutien. Noter cependant que les en-têtes ne sont pas toujours fiables, et il a été connu pour causer des problèmes avec la mise en cache. Même si vous pouvez obtenir ce travail, avoir à maintenir deux semblables, mais différentes versions serait une douleur.
Compte tenu de tous ces problèmes, je suis en faveur de donner xhtml une miss, quand vos outils et de bibliothèques vous permettent, bien sûr.