• ASP.Net 实现伪静态方法及意义


    伪静态的用处:

    搜索引擎会不收录带问号的网址,因为搜索引擎怕由于问号而陷入死循环,称为“搜索机器人陷阱”,所以很多带问号的地址搜索引擎不会进去。

    带问号的网址,搜索引擎也是会收录的,权重不高。

    伪静态对于搜索引擎来说,就是静态,因为地址中间没有带问号,所以没有真静态比伪静态收录的多的说法。

    为啥要选择伪静态捏?

    “Discuz!目前有 2129867 篇帖子,存储成html的话大约是 20799M,也就是 20G左右。这当中还不计算由于磁盘存储机制造成的空间浪费(100个 1k的文件占用的空间可能会是200K)。”

    所谓的文本论坛,实际就跟真静态的说法差不多了,将数据存储在空间上面,大量的读写硬盘,等等。

    删除更新html内容,会导致大量的磁盘操作以及大量的磁盘碎片,甚至会导致硬盘出现坏道。

    伪静态的坏处

    如果流量稍大一些,使用伪静态就会出现CPU超负荷,由于伪静态是用正则判断是不是真实地址,分辨到底显示那个页面的责任也直接指定转由CPU来判断了,所以CPU有量的上升,确实是伪静态最大的弊病。

    应该使用静态还是伪静态?

    1 使用静态和伪静态,对于SEO来说并没有什么区别。

    2使用真静态可能会导致磁盘损坏并影响网站 论坛的性能。

    3使用伪静态占用一定量的CPU占有率,大量使用将导致CPU超负荷。

    总得来说,静态是为了SEO,既然静态是做给SEO看的,只需要伪静态给SEO就可以了,不需要给用户使用,所以,只要在专门提供SEO爬的 Archiver中使用伪静态就好了。

     

    其实所谓的伪静态页面,就是指的URL重写,在ASP.NET中实现非常简单
    首先你要在你的项目里引用两个DLL:
                    ActionlessForm.dll
                    URLRewriter.dll
       真正实现重写的是 URLRewriter.dll   但是如果你要实现分页,那么必须使用这个ActionlessForm .dll
    首先在web.config里写

    <configSections>
           <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
    </configSections>
    <httpModules>
           <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
    </httpModules>
    <!-- 下面是配置重写URL规则 -->
    <RewriterConfig>
           <Rules>
             <RewriterRule>
               <LookFor>~/Products/Jurisdiction_(\w{3})\.aspx</LookFor>
               <SendTo>~/En/Jurisdiction.aspx?jurid=$1</SendTo>
             </RewriterRule>
             <RewriterRule>
               <LookFor>~/Articles/(\d{1,})\.aspx</LookFor>      <!-- 这个是被代替后的文件名,使用到正则表达式 -->
               <SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1]]></SendTo>      <!-- 这个是要给代替的网页,一般是带有问号后面带参数的网页 -->
             </RewriterRule>
             <RewriterRule>
               <LookFor>~/Articles/(\d{1,})_(\d{1,})\.aspx</LookFor>
               <SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1&page=$2]]></SendTo>
             </RewriterRule>
          </Rules>
    </RewriterConfig>
    这样比如上面的网址http://localhost/En/Article_View.aspx?article_id=9就可以用http://localhost/Articles/9.aspx来代替,当然,你代替后的扩展名可以用任何iis能解释的扩展名,如果你喜欢用htm做扩展名,那么在配置转发规则上面配置为htm为扩展名的,同样有些文章可能很长,往往我们会把一个文章分成几页,那么根据上面的配置,我们如果想访问http://localhost/En/Article_View.aspx?article_id=9&page=3我们就可以用http://localhost/Articles/9_3.aspx来代替,这样当搜索引擎来抓起你的网页的时候,就会收录你这些网址下去,别人搜索到你网页的时候,就可以从这些地址链接过来。

    然后这样操作:
                       右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的目录-->右键点击属性 -->点击'配置'-->
    映射下面 -->找到.aspx的可执行文件路径 复制路径-->粘贴路径-->扩展名为".html"-->然后把检查文件是否存在的勾去掉 这样就可以了

    以上学习资料参考来源于新浪欧阳孔剑的blog,自己整理了一下。

    之前记得可以利用HttpModule来实现URL重写的,具体忘记了。

    HTTPModule是向实现提供模块初始化和处置事件,负责监听HttpRequest,同时对HttpRequest增添或过滤掉一部分内容。当一个HTTPRequest到达HTTPModule时,整个ASP.Net Framework系统并没有对这个请求做任何处理,对于Http请求来两,HttpModule是一个HTTP请求的“必经之地”。

    最近这个网站用的伪静态也是利用了一个组件,在web.config中配置,网站根目录下有个http.ini文件,ini文件也是利用正则表达式,判断地址,然后解析地址,生成伪静态的网址。

  • 相关阅读:
    任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。
    【每天一个Linux命令】14. Linux中locate命令的用法
    ZetCode PyQt4 tutorial signals and slots
    ZetCode PyQt4 tutorial layout management
    ZetCode PyQt4 tutorial work with menus, toolbars, a statusbar, and a main application window
    ZetCode PyQt4 tutorial First programs
    A Simple Makefile Tutorial
    Swapping eth0 and eth1 on OK335xS board
    OK335xS U-boot 环境变量解析
    OK335xS U-boot GPIO control hacking
  • 原文地址:https://www.cnblogs.com/skylaugh/p/2988831.html
Copyright © 2020-2023  润新知