我正在为我的一个客户构建网站内容管理系统。这是一个高度定制的系统,所以我不能使用任何“搁置”解决方案。
我需要允许我的客户端即时向网站添加页面。我有两个选择: (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等。
我相信,虽然前者更容易实现,但后者对于用户和Google来说都更好。
我的问题是(最后):( 1)您是否同意后者是更好的解决方案,以及(2)实施此类解决方案的最佳方式是什么?我应该使用FileSystem创建和更新每个文件(即 - 网站的管理系统要求用户提供页面/文件名,页面标题和内容,并根据这些参数动态创建页面)?还有更好的方法吗?
谢谢!
答案 0 :(得分:4)
完全可以让数据库驱动的页面具有漂亮的URL。 StackOverflow本身就是一个很好的例子 - 这个问题的URL是http://stackoverflow.com/questions/1119274/adding-pages-on-the-fly-with-a-cms-system
,但页面是从数据库构建的,而不是静态HTML。
答案 1 :(得分:2)
我会使用第一个解决方案,但使用自定义请求处理程序屏蔽地址。基本上,为每个页面提供唯一的字符串ID(例如about-us
),然后使用请求处理程序获取所有请求,在数据库中找到此特定页面并进行渲染。
有关其他信息,请参阅this article(在Google中使用Google搜索自定义http处理程序时找到它。)在该文章中,它添加了以下处理程序:
<add verb="*" path="*.piechart" type="PieChartHandler"/>
您可能希望捕获所有路径(*
),但不包括用于CSS,图片和JavaScript的某些媒体路径。
更多资源:
答案 2 :(得分:0)
如果我在哪里,我会清除静态页面。动态数据,MVC和一些好的计划应该会带你走很长的路!
您需要做的是创建一些或多个模板,mvc中的每个视图/控制器都可以使用。让负责内容的人通过动态数据实体处理它。
答案 3 :(得分:0)
我会使用第一个想法,但制定出更好的URL方案。如果系统没有提供好的URL(没有?),你将难以让搜索引擎解析整个站点。使用数字而不是单词会使用户难以传递URL。
如果您开始遇到性能问题,可以添加会不时生成静态页面的缓存。我会避免这样做,直到你必须这样做;缓存可能会导致许多令人头痛的问题。
答案 4 :(得分:0)
虽然现有的建议听起来或多或少,但评论员未能考虑一个因素,诚然,你没有详细说明。这些页面在构建后是否会被编辑,或者是他们的一次性创作?如果是后者,那么您生成静态页面的计划并不像他们建议的那么糟糕。当你只能提供平面内容时,为什么还要考虑数据库模式和缓存呢。
它可能会成为相当没有生命的,尽头的道路页面,但如果那就是你想要的......