ASP.NET伪静态的实现及伪静态的意义
展开全部
一 伪静态的用处 有些用户觉得 伪静态和真静态实际被收录量会相差很大 其实不然 从你个人角度 你去判断一下一个帖子到底是真静态还是伪静态?估计很难看得出 因为所谓静态的意思 就是地址中不带问号 不带问号的就是静态 管他是真的还是伪的?搜索引擎看得出吗?所以说 其实不论是真的还是伪的 其实对于搜索引擎来说都是一样的 搜索引擎没有说 你这个是伪的 我不收录你 追根究底来说 为什么搜索引擎会不收录带问号的网址?因为搜索引擎怕由于问号而进入死循环 称为 搜索机器人陷阱(Spidertraps) (以前动网就有这样一个漏洞 蜘蛛进去出不来了) 所以很多时候带问号的地址搜索引擎是不会进去的 伪静态对于搜索引擎来说 其实就是静态 因为地址中没有带问号 所以没有真静态比伪静态收录得多的说法 二 为什么选择伪静态? 有很多用户说 真静态不好吗?为什么不用真静态?访问起来不是更快吗?负载不是更好吗?等等等等 在这里 其实只用一个问题来回答 为什么选择MYSQL?很多用户大概不明白为什么那么多大型论坛都选择了MYSQL数据库作为储存机制 大概大部分都是想 因为DZ用了MYSQL 所以就是MYSQL 其实不然 试想DZ为什么会在那么多论坛程序并存的日子生存下来并笑傲江湖 很大原因是因为DZ用了MYSQL 试想如果大C当年改的程序是一个文本论坛 那还会有DZ的今天吗?或者从另一个角度问 为什么那么多大型网站都选择了MYSQL而不是文本作为储存机制? 所谓文本论坛 实际就跟真静态的说法差不多了 将数据储存在空间上面 大量读写硬盘 等等 为什么这种写法会被淘汰呢?我相信答案不会是老师所说的 Discuz!目前有 篇帖子 存储成的话大约是 M 也就是 G左右 这当中还不计算由于磁盘存储机制造成的空间浪费( 个 k的文件占用的空间可能会是 K) 这种说法从我个人观点来看 这个理由不能给用户不使用真静态充分的理由 然而 另一个理由却是值得我们注意思考的 也是为什么绝大多数站都不选择生成静态 删除 更新这些内容会导致大量的磁盘io操作以及大量的磁盘碎片 正如上面的说法 在实际当中确实会导致大量的磁盘I/O操作(input/output) 大量进行I/O操作带来的后果可想而知 会产生大量的磁盘碎片甚至会导致硬盘出现坏道 所以对于生成静态而言 还不如去用文本论坛 可以更好的解决你们的需求 (副W就是做文本论坛出生的 当时的名字为ofstar 后因发展困难转为MYSQL 而PW生成静态页面也就是PW以前文本方式稍加改进用于吸引用户眼球的噘头) 当然 如果大家记忆力好的话 应该可以记得PW 的时候PW论坛不能访问很长一段时间 后来恢复到一段时间前的数据 官方的说法是被人攻击而导致硬盘损坏 其实这种说法是比较不可信的 相对于是被攻击导致硬盘损坏还是大量I/O操作而产生的后果 我个人更倾向于后者 当然 如果大家比较关注 d d的话 应该知道前几天有一天时间 d d无法访问 根据非官方消息是因为硬盘坏了 而损坏的原因我想当然是因为大量用户大量进行I/O操作了 试想 我们一个论坛 进行磁盘I/O操作的仅为管理员进行更新缓存时进行的 而 d d每一个会员就是一个管理员 试想下对磁盘是多大的考验?所以我并不奇怪 d d的硬盘坏了 当然 也许在读这篇文章的很多朋友都有使用过BT 也听说过BT对硬盘很伤 不能开多 而所谓伤害 和这里指的都是同一样东西 大量I/O导致磁盘出现碎片甚至出现磁盘坏道 这里都是说些很实际的例子来说明问题了 三 伪静态的坏处 当然犹如一篇文章的作者所说的 如果流量稍大一些使用伪静态就出现CPU使用超负荷 我的同时在线 多人就挂了 而不使用伪静态的时候同时在线超 人都不挂 我的ISS数是 确实是这样的 由于伪静态是用正则判断而不是真实地址 分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了 所以CPU占有量的上升 确实是伪静态最大的弊病
四 我们应该选择伪静态还是真静态? 我们来总结一下 使用真静态和假静态对SEO来说没有什么区别 使用真静态可能将导致硬盘损坏并将影响论坛性能 使用伪静态将占用一定量的CPU占有率 大量使用将导致CPU超负荷 最重要的一点 我们要静态是为了SEO 所以 使用真静态的方法可以直接排除了 因为无论怎么生成 对硬盘来说都是很伤的 既然真伪静态的效果一样 我们就可以选择伪静态了 但是伪静态大量使用会照成CPU超负荷 所以我们只要不大量使用就可以了 既然静态只是给SEO看的 我们只需要伪静态给SEO就行了 不需要给用户使用 所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了 谢谢大家耐心看我写的文章 有何不解的地方或是有不同的看法欢迎提出 五 关于伪静态和真静态的评论 真正的静态化和伪静态还是有本质的区别的 为浏览用户处理一个纯粹和一个调用多个数据的php在CPU的使用率方面明显前者少 记得原来有个人说下载硬盘读写频繁 他这么说好像读取数据库不用读写磁盘似的 何况还有一大堆缓存的零散php也是放在硬盘的 这些读取不用磁盘操作么?可笑 读取单个+图片Flash等附件就可以实现的目的 何苦要读数据库又要读php缓存文件又要重新整合数据输出再+图片Flash等附件这么大费周章呢?CMS首页不需要很多的互动的 论坛那一套不应该拿到这里来用 相反应该更多考虑的是 美观!兼容!信息的直观!性能!还有稳定! 其实所谓的伪静态页面 就是指的URL重写 在ASP NET中实现非常简单 首先你要在你的项目里引用两个DLL: ActionlessForm dll URLRewriter dll 真正实现重写的是 URLRewriter dll 但是如果你要实现分页 那么必须使用这个ActionlessForm dll 首先在nfig里写 <configSections> <section name= RewriterConfig type= URLRewriter Config RewriterConfigSerializerSectionHandler URLRewriter /> </configSections> <Modules> <add type= URLRewriter ModuleRewriter URLRewriter name= ModuleRewriter /> </Modules> <! 下面是配置重写URL规则 > <RewriterConfig> <Rules> <RewriterRule> <LookFor>~/Products/Jurisdiction_(w{ }) aspx</LookFor> <SendTo>~/En/Jurisdiction aspx?jurid=$ </SendTo> </RewriterRule> <RewriterRule> <LookFor>~/Articles/(d{ }) aspx</LookFor> <! 这个是被代替后的文件名 使用到正则表达式 > <SendTo><![CDATA[~/En/Article_view aspx?article_id=$ ]]></SendTo> <! 这个是要给代替的网页 一般是带有问号后面带参数的网页 > </RewriterRule> <RewriterRule> <LookFor>~/Articles/(d{ })_(d{ }) aspx</LookFor> <SendTo><![CDATA[~/En/Article_view aspx?article_id=$ &page=$ ]]></SendTo> </RewriterRule> </Rules> </RewriterConfig> 这样比如上面的网址x?article_id= 就可以用x来代替 当然 你代替后的扩展名可以用任何iis能解释的扩展名 如果你喜欢用做扩展名 那么在配置转发规则上面配置为为扩展名的 同样有些文章可能很长 往往我们会把一个文章分成几页 那么根据上面的配置 我们如果想访问x?article_id= &page= 我们就可以用x来代替 这样当搜索引擎来抓起你的网页的时候 就会收录你这些网址下去 别人搜索到你网页的时候 就可以从这些地址链接过来 然后这样操作: 右键点我的电脑 >管理 >展开 服务和应用程序 >internet信息服务 >找到你共享的目录 >右键点击属性 >点击 配置 > 映射下面 >找到 aspx的可执行文件路径复制路径 >粘贴路径 >扩展名为l >然后把检查文件是否存在的勾去掉这样就可以了 lishixinzhi/Article/program/net/201311/11583
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询