基于内容的网站存储其内容的位置?

时间:2009-07-19 14:29:53

标签: asp.net sql-server

cnn.com或foxnews.com等网站 他们在哪里存储所有文章?在HTML文件中?在数据库中?
更逻辑地将所有内容存储在DB中但是如何生成到DB内部的东西的静态链接?

并不是他们有一个动态页面加载如:LoadArticle.aspx?ArticleID = 123,每篇文章都有自己的地址。

请解释这是如何完成的。

8 个答案:

答案 0 :(得分:4)

他们使用名为VoodooLib.dll的特殊内容管理库。

说真的,当您向数据库写入内容时,通常会生成某种唯一标识符 - 例如123。它与该记录(文章内容)永久关联。之后,它将用于在以后的任何时间生成与Url的一部分相同的ID。

至于静态链接,只需Url Rewriting

您生成要在页面上显示的静态链接,因为它们对SEO更有效。当对该静态Url的请求命中服务器时,它将替换为“服务器友好”的内容,然后进行处理。

答案 1 :(得分:1)

他们可能使用某种形式的Content Management System(CMS)。有许多不同的 - 大多数将实际内容存储在数据库中或存储为XML(某些存储XML存储在数据库中)。他们将该内容发布为静态HTML页面,或者更常见的是,将其作为缓存的动态页面发布。许多人使用所谓的“友好URL”,这些URL是使用URL-rewriting techniques映射到实际物理文件路径的虚拟地址。

请注意,您无法仅通过扩展程序判断页面是动态还是静态。动态页面很可能以.html扩展名结尾。

答案 2 :(得分:1)

仅仅因为URL看起来“静态”并不意味着它;他们可以使用mod_rewrite或IIS ISAPI之类的东西来使URL更适合搜索引擎。

但是,对于您提到的大量新闻网站,他们可能会静态生成页面,以防止重复请求同一篇文章而导致数据库超载。

答案 3 :(得分:0)

看看这个页面的URl,它没有xxx.aspx?some-query-string

您正在使用友好的网址。

要做类似的事情,一种常见的方法是使用URL Rewrite和/或一些自定义HTTPModule

这是一个很好的参考:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

答案 4 :(得分:0)

仅仅因为页面具有普通URL并不意味着它不提供动态内容。使用Apache mod_rewrite模块,可以操作URL。因此,例如,http://www.domain.tld/permalink/12345/message-title-slug之类的网页可以在内部转换为http://www.domain.tld/permalink/index.php?id=12345&slug=message-title-slug

我不知道cnn.com和foxnews.com究竟使用了什么,但我敢打赌,他们使用的内容管理系统(CMS)动态地为所有页面提供服务,内容存储在数据库或文件系统中,以及通过特定的CMS执行创作/发布。

答案 5 :(得分:0)

只需检查cnn.com,文章链接就在其中

  • 位置(美国或WORLD / specificlocationid)
  • 文章名称。

所有这些信息可以用来唯一地识别任何文章(实际上可能需要更少的文章)。可以通过某种URL重写方法轻松隐藏动态内容加载页面地址,然后使用请求的URL中的信息来确定要提供数据库中的哪篇文章。

答案 6 :(得分:0)

我不知道为什么所有其他的回答者似乎都认为创建友好的URL需要某种形式的URL重写。这根本不是真的。

完全可以编写将URL拆分为参数的Web服务代码 - 例如年,月,标题 - 并将其直接传递给从数据库获取内容的代码,而无需重写URL。大多数现代Web框架(如Django和Rails)都包含此功能。

答案 7 :(得分:0)

这是通过mod-rewrite技术完成的。

这是一篇关于mod重写引擎的文章:http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

这是他们的“指南”:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

我希望有所帮助。它应该是一个很好的起点。古德勒克。