La fonction du plan du site est de permettre aux moteurs de recherche d'inclure le plus rapidement possible un plus grand nombre de pages Web du site Web.
Ici, il faut d’abord comprendre un principe de base, la méthode de crawl des moteurs de recherche. L'Internet dans son ensemble est comme un « réseau » entrecroisé : chaque nœud du réseau est chaque page Web, et chaque page Web est connectée les unes aux autres via des URL. Une araignée peut partir d'une page Web et explorer une autre page Web via l'URL de la page Web ; puis explorer d'autres pages Web via l'URL d'une autre page Web... et ainsi de suite. Mais s'il s'agit d'un site Web récemment publié, il se peut qu'aucune autre URL ne pointe vers lui, il ne sera donc jamais « exploré » (inclus). Afin de résoudre ce problème, le nouveau site Web peut soumettre activement l'URL au moteur de recherche et demander aux robots de l'explorer (URL de l'application Google :), mais généralement, seule l'URL d'une page d'accueil sera soumise lors de la candidature.
Pour que toutes les URL (en particulier celles générées dynamiquement) soient récupérées rapidement et facilement par les robots, nous devons fournir une structure complète, claire et un plan du site mis à jour en temps opportun.
Et pour gérer le fichier robots.txt de contenu en double, nous utilisons le fichier .ashx pour générer un plan de site au format XML basé sur sitemaps.org. Une fois le plan du site généré, nous pouvons le soumettre aux moteurs de recherche tels que Google. Un grand nombre d'articles confirment que la soumission d'un plan du site améliorera considérablement la vitesse et la profondeur de l'inclusion du site Web. Presque toutes les autres méthodes de référencement peuvent être difficiles à prouver, inefficaces ou même provoquer des effets secondaires, à l’exception de la soumission d’un plan du site !
Linq to XML nous apporte une expérience opérationnelle presque parfaite.
<%@ WebHandler Language="C#" Class="site Web" %>
utiliser le système ;
en utilisant System.Web ;
en utilisant System.Xml ;
en utilisant System.Xml.Linq ;
en utilisant System.Linq ;
site Web de classe publique : IHttpHandler {
public void ProcessRequest (contexte HttpContext) {
contexte.Response.ContentType = "text/xml";
//Informations de déclaration du fichier. La valeur oui du troisième paramètre autonome indique que ce document XML est autonome et ne s'appuie pas sur une DTD définie en externe.
Déclaration XDeclaration = new XDeclaration("1.0", "UTF-8", "yes");
contexte.Response.Write(déclaration);
//Espace de noms du fichier XML
XNamespace ns = " http://www.google.com/schemas/sitemap/0.84 ";
XElement siteMap = new XElement(ns + "urlset");
string fixedUrl = " http://www.freeflying.com/article ";
chaîne entièreUrl = chaîne.Empty;
// Bouclez les données et convertissez-les en nœuds XML
foreach (élément var dans Articles.GetArticles())
{
URL XElement = new XElement("url");
WholeUrl = string.Format("{0}?id={1}&catelog={2}",fixedUrl,item.ID,item.Catelog);
XElement loc = new XElement("loc", WholeUrl);
XElement lastmod = new XElement("lastmod", item.LastMod.AddDays(-23).ToShortDateString());
XElement changefreq = new XElement("changefreq", item.Frequency);
Priorité XElement = new XElement("priorité", item.Weight);
url.Add(loc, lastmod, changefreq, priorité);
siteMap.Add(url);
}
//Enfin, afficher l'intégralité du fichier XML
contexte.Response.Write(siteMap);
}
public bool IsReusable {
obtenir {
renvoie faux ;
}
}
}
La technologie XML sera également utilisée dans RSS
<%@ WebHandler Language="C#" Class="rss" %>
utiliser le système ;
en utilisant System.Web ;
en utilisant System.Xml ;
en utilisant System.Xml.Linq ;
classe publique rss : IHttpHandler {
public void ProcessRequest (contexte HttpContext) {
contexte.Response.ContentType = "text/xml";
context.Response.Write("<?xml version="1.0" encoding="UTF-8" ?>");
XElement rssFeed = new XElement("rss", new XAttribute("version","2.0"));
string fixedUrl = " http://www.freeflying.com/article ";
chaîne entièreUrl = chaîne.Empty;
Canal XElement = nouveau XElement("canal",
new XElement("titre", "vol libre"),
nouveau XElement("lien", URL fixe),
new XElement("description","le site pour rêver voler librement"),
nouveau XElement("pubDate",DateTime.Now.ToString())
);
foreach (article var dans Articles.GetArticles())
{
Élément XElement = new XElement("élément");
Titre XElement = new XElement("titre", article.Titre);
WholeUrl = string.Format("{0}?id={1}&catelog={2}", fixedUrl, article.ID, article.Catelog);
Lien XElement = new XElement("lien", WholeUrl);
Description XElement = new XElement("description", article.Description);
XElement pubDate = new XElement("pubDate", article.LastMod.ToString());
item.Add(titre, lien, description, pubDate);
canal.Add (élément);
}
rssFeed.Add(canal);
contexte.Response.Write(rssFeed);
}
public bool IsReusable {
obtenir {
renvoie faux ;
}
}
}
données simulées
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Configuration ;
en utilisant System.Linq ;
en utilisant System.Web ;
en utilisant System.Web.Security ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.HtmlControls ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.WebControls.WebParts ;
en utilisant System.Xml.Linq ;
en utilisant System.Web.UI.MobileControls ;
en utilisant System.Collections.Generic ;
/// <résumé>
/// Description récapitulative des articles
/// </summary>
articles de classe publique
{
articlespublics()
{
//
// TODO : Ajouter la logique du constructeur ici
//
}
Liste statique publique<Article> GetArticles()
{
renvoyer une nouvelle liste<Article>(){
nouvel article (234, "blog", DateTime.Now.AddDays (-23), Freq.none, 0.8, "asp.net seo", "articles sur le référencement dans asp.net"),
nouvel article (267, "blog", DateTime.Now.AddDays(-245), Freq.daily, 0.6, "ado.net pro","à propos de l'utilisation de l'ensemble de données"),
nouvel article (653, "actualités", DateTime.Now.AddDays (-45), Freq.daily, 1, "CLR via C#", "carnet à propos de ce livre")
} ;
}
}
Article de classe publique
{
identifiant international public ;
chaîne publique Catelog ;
public DateHeure LastMod ;
public double poids ;
Fréquence publique ;
chaîne publique Titre ;
chaîne publique Description ;
Article public (identifiant int, catalogue de chaînes, DateTime lastMod, fréquence Freq, double poids, titre de chaîne, description de chaîne)
{
ID = identifiant ;
Catelog = catelog;
DernierMod = dernierMod ;
Poids = poids ;
Fréquence = fréquence ;
Titre = titre ;
Descriptif = descriptif ;
}
}
Fréq enum public
{
aucun = 1,
quotidiennement = 2,
hebdomadaire = 3,
}
Auteur : Lien original de Free Fly