ASP.NET的SEO:Linq to XML---网站地图和RSS Feed

简介: 本系列目录网站地图的作用是让搜索引擎尽快的,更多的收录网站的各个网页。    这里我们首先要明白一个基本的原理,搜索引擎的爬行方式。整个互联网就像一张纵横交错的“网”:网的各个节点就是各个网页,而各个网页之间通过url相互连接。
本系列目录

网站地图的作用是让搜索引擎尽快的,更多的收录网站的各个网页。
    
这里我们首先要明白一个基本的原理,搜索引擎的爬行方式。整个互联网就像一张纵横交错的“网”:网的各个节点就是各个网页,而各个网页之间通过url相互连接。蜘蛛可以从一个网页出发,通过该网页上的url,爬到另一个网页;再通过另一个网页上的url,再爬到更多的网页……,以此类推。但如果是一个新发布的网站,可能就没有其他url指向它,那么它就永远不会被“爬到”(收录)。为了解决这个问题,新站可以自己主动向搜索引擎提交url,申请蜘蛛前来抓取(Google申请网址:),但申请时一般只会提交一个主页的url。

为了让所有的url(尤其是动态生成的)都能被蜘蛛快捷便利的检索到,我们就需要提供一个全面完整、架构清晰和更新及时的网站地图。( 网站地图的更多信息)。

和处理重复内容的robots.txt文件,我们通过.ashx文件来生成一个基于sitemaps.org的xml格式的网站地图。网站地图生成之后,我们就可以向Google等搜索引擎提交。大量的文章证实,提交网站地图将极大的提高网站的收录速度和深度。其他几乎所有的SEO方法,都有可能效果难以证实、失效甚至带来副作用,但提交网站地图除外!


Linq to XML为我们带来了近乎完美的操作体验。

img_405b18b4b6584ae338e0f6ecaf736533.gif WebSite
<% @ WebHandler Language = " C# "  Class = " website "   %>

using  System;
using  System.Web;
using  System.Xml;
using  System.Xml.Linq;
using  System.Linq;

public   class  website : IHttpHandler {
    
    
public   void  ProcessRequest (HttpContext context) {

        context.Response.ContentType  =   " text/xml " ;

        
// 文件的声明信息,第第三个参数standalone的值yes 表示这个 XML 文档是自包含的(self-contained)而不依赖于外部所定义的一个 DTD. 
        XDeclaration declaration  =   new  XDeclaration( " 1.0 " " UTF-8 " " yes " );
        context.Response.Write(declaration);
        
        
// XML文件的命名空间
        XNamespace ns  =   " http://www.google.com/schemas/sitemap/0.84 " ;
        XElement siteMap  =   new  XElement(ns  +   " urlset " );

        
string  fixedUrl  =   " http://www.freeflying.com/article " ;
        
string  wholeUrl  =   string .Empty;
        
        
// 循环取出数据,转换成XML节点
         foreach  (var item  in  Articles.GetArticles())
        {
            XElement url  =   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);
            XElement priority  =   new  XElement( " priority " , item.Weight);

            url.Add(loc, lastmod, changefreq, priority);

            siteMap.Add(url);
        }

        
        
        
// 最后输出整个xml文件
        context.Response.Write(siteMap);
    }
 
    
public   bool  IsReusable {
        
get  {
            
return   false ;
        }
    }

}

 

同样还将使用到xml技术的还有RSS

img_405b18b4b6584ae338e0f6ecaf736533.gif RSS
<% @ WebHandler Language = " C# "  Class = " rss "   %>

using  System;
using  System.Web;
using  System.Xml;
using  System.Xml.Linq;


public   class  rss : IHttpHandler {
    
    
public   void  ProcessRequest (HttpContext context) {
        context.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 " ;
        
string  wholeUrl  =   string .Empty;

        XElement channel  =   new  XElement( " channel " ,
            
new  XElement( " title " " freeflying " ),
            
new  XElement( " link " , fixedUrl),
            
new  XElement( " description " , " the website for dream flying freely " ),
            
new  XElement( " pubDate " ,DateTime.Now.ToString())
            );
        
        
        
foreach  (var article  in  Articles.GetArticles())
        {
            XElement item  =   new  XElement( " item " );

            XElement title  =   new  XElement( " title " , article.Title);

            wholeUrl  =   string .Format( " {0}?id={1}&catelog={2} " , fixedUrl, article.ID, article.Catelog);
            XElement link  =   new  XElement( " link " , wholeUrl);

            XElement description  =   new  XElement( " description " , article.Description);

            XElement pubDate  =   new  XElement( " pubDate " , article.LastMod.ToString());

            item.Add(title,link,description,pubDate);

            channel.Add(item);
        }

        rssFeed.Add(channel);

        context.Response.Write(rssFeed);

    }
 
    
public   bool  IsReusable {
        
get  {
            
return   false ;
        }
    }
    

}

   

img_405b18b4b6584ae338e0f6ecaf736533.gif 模拟数据
using  System;
using  System.Data;
using  System.Configuration;
using  System.Linq;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Xml.Linq;
using  System.Web.UI.MobileControls;
using  System.Collections.Generic;

///   <summary>
///  Summary description for Articles
///   </summary>
public   class  Articles
{
    
public  Articles()
    {
        
//
        
//  TODO: Add constructor logic here
        
//
    }

    
public   static  List < Article >  GetArticles()
    {
        
return   new  List < Article > (){
            
new  Article( 234 " blog " , DateTime.Now.AddDays( - 23 ), Freq.none,  0.8 " asp.net seo " " articles about SEO in asp.net " ),
            
new  Article( 267 " blog " , DateTime.Now.AddDays( - 245 ), Freq.daily,  0.6 " ado.net pro " , " about the dataset usage " ),
            
new  Article( 653 " news " , DateTime.Now.AddDays( - 45 ), Freq.daily,  1 , " CLR via C# " , " notebook about this book " )
        };
    }


}

public   class  Article
{
    
public   int  ID;
    
public   string  Catelog;
    
public  DateTime LastMod;
    
public   double  Weight;
    
public  Freq Frequency;
    
public   string  Title;
    
public   string  Description;

    
public  Article( int  id,  string  catelog, DateTime lastMod, Freq frequency,  double  weight,  string  title,  string  description)
    {
        ID  =  id;
        Catelog  =  catelog;
        LastMod  =  lastMod;
        Weight  =  weight;
        Frequency  =  frequency;
        Title  =  title;
        Description  =  description;
    }
}

public   enum  Freq
{
    none  =   1 ,
    daily  =   2 ,
    weekly  =   3 ,
}


相关文章
|
XML 存储 C#
C#三十 Ado.net和XML
C#三十 Ado.net和XML
60 0
|
XML 存储 JSON
使用自定义XML配置文件在.NET桌面程序中保存设置
本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。
130 0
|
存储 C# 数据库
.NET开源的在Windows上统计软件使用时长和网站浏览时长工具 - Tai
.NET开源的在Windows上统计软件使用时长和网站浏览时长工具 - Tai
101 0
|
4月前
|
C#
效率提升利器:一个在线的.NET源码查询网站
效率提升利器:一个在线的.NET源码查询网站
|
6月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
310 2
|
6月前
|
Java PHP 开发工具
支付宝记---电脑网站支付(.NET)
支付宝记---电脑网站支付(.NET)
132 1
|
6月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
98 0
|
Docker 容器
.NET Core 网站项目在Docker中运行无法访问问题处理
.NET Core 网站项目在Docker中运行无法访问问题处理
477 0
|
XML 数据采集 JavaScript
基于.Net开源Html解析器,此外还支持SVG、XML等格式
基于.Net开源Html解析器,此外还支持SVG、XML等格式
64 0
|
开发框架 供应链 前端开发
net基于asp.net的社区团购网站
社区团购系统依托社区团购系统和社区门店,是现在的一个重大市场和发展方向,通过研究企业在社区团购系统环境下的营销模式创新,对于普通的零售业和传统社区团购系统的转型发展具有重要的理论意义。随着互联网行业的发展,人们的生活方式发生着重大变化,人们越来越倾向于网络购物,这对传统企业来说如何把客户留下是一个重大挑战。就现在而言,由于社区团购的竞争已经进入最紧张激烈的阶段,有些团购平台甚至已经彼此之间打起了价格战,其中不乏有平台因为利润变少或资金链断裂而半途败亡。企业在实际的商业活动中,往往会面临许多等待优化的问题。因此,要在竞争激烈的市场中拔得头筹,必须重视提升对新商业模式的全面认知,科学于实际贴合的分
104 0