0

我正在为我的一位客户构建网站内容管理系统。这是一个高度定制的系统,所以我不能使用任何“搁置”解决方案。

我需要允许我的客户即时向网站添加页面。我在这里有两个选择:(1)以 www.mycompany.com/page.aspx?catID=5&pageID=3 的格式创建一个数据库驱动的页面(使用类别和页面 ID 查询数据库,获取数据并显示它(2) 允许管理系统创建静态页面,例如 www.mycompany.com/company/aboutus.aspx 和 www.mycompany.com/company/company_history.aspx 等。

我相信,虽然前者更容易实现,但后者对用户和谷歌来说都更好。

我的问题是(最后):(1)您是否同意后者是更好的解决方案,以及(2)实施这种解决方案的最佳方法是什么?我是否应该使用文件系统创建和更新每个文件(即站点的管理系统要求用户提供页面/文件名、页面标题和内容,并根据这些参数动态创建页面)?有没有更好的办法?

谢谢!

4

5 回答 5

4

完全有可能拥有带有漂亮 URL 的数据库驱动页面。StackOverflow 本身就是一个很好的例子——这个问题的 URL 是http://stackoverflow.com/questions/1119274/adding-pages-on-the-fly-with-a-cms-system,但页面是从数据库构建的,而不是静态 HTML。

于 2009-07-13T12:59:37.043 回答
2

我会使用第一个解决方案,但使用自定义请求处理程序屏蔽地址。基本上,给每个页面一个唯一的字符串 ID(例如about-us),然后使用接收所有请求的请求处理程序,在数据库中找到这个特定页面并呈现它。

有关其他信息,请参阅这篇文章(在 ASP.NET 中搜索自定义 http 处理程序时发现它。)在那篇文章中,它添加了以下处理程序:

 <add verb="*" path="*.piechart" type="PieChartHandler"/>

您可能想要捕获所有路径 ( *),不包括用于 CSS、图像和 JavaScript 的某些媒体路径。

更多资源:

于 2009-07-13T13:02:01.867 回答
0

如果我在你那里,我会远离静态页面。动态数据、MVC 和一些好的规划应该会带你走很长的路!

您需要做的是创建一些或多个 mvc 中的每个视图/控制器都可以使用的模板。让负责内容的人通过动态数据实体来处理它。

于 2009-07-13T13:04:40.963 回答
0

我会使用第一个想法,但会制定一个更好的 URL 方案。如果系统不提供漂亮的 URL(没有?),您将很难让搜索引擎解析整个站点。使用数字而不是单词也会使用户难以传递 URL。

如果您开始遇到性能问题,您可以添加会不时生成静态页面的缓存。在您必须这样做之前,我会避免这样做;在正确处理缓存的过程中,缓存可能会引起很多麻烦。

于 2009-07-13T13:08:28.013 回答
0

尽管现有的建议或多或少是合理的,但评论员未能考虑一个因素,诚然,您没有提供太多细节。这些页面是他们在构建后将编辑的,还是他们一次性的创作?如果是后者,那么您生成静态页面的计划并没有他们建议的那么糟糕。当您可以提供平面内容时,为什么还要考虑数据库模式和缓存。

它可能会使页面变得毫无生气,最终页面,但如果这就是你想要的......

于 2009-07-20T16:54:48.807 回答