通过SQL数据库的内容来生成网页布局 - 有此种经验的高手请进。

CTO 2015-07-20 04:34:50
基于ASP.net MVC 5.0

现在想做一个特殊的“单页”程序,本身是“空页”,通过URL传入一个参数,然后根据这个参数读取数据库表中的对应列(XML格式),返回一个XML文件,然后再通过这个XML里面的定义,动态的把这个“空页”填充。

比如,用户访问 http://myapp.local/Class2015AA/,然后发生如下事件:
1. 程序应访问 MS SQL 2014 database.dbo.pagelayout里面的 Class2015AA 段 (XML类型)
2. 根据返回的XML文件来生成HTML页面布局,比如这个页面会有2个textbox, 2 个datetime, 1个picklist, 2个button。

请教最佳的性能实践 - 比如是否可以把读出的XML 缓存在用户处,不必下次再从DB读取?

...全文
360 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
CTO 2015-07-23
  • 打赏
  • 举报
回复
还有回复么?
CTO 2015-07-21
  • 打赏
  • 举报
回复
多谢大家回复, sp1234回答已经超越了问题本身的层次。。。 我在考虑一个高性能并且可以扩充的方法来实现这个目的,现在考虑如果把HTML保存在数据库,直接读取也不一定快,因为要把整个页面整进整出;如果存储自定义的XML文件会更小,而且更结构化;读取的时候在服务器端再解析成HTML文件,返回给客户端。 但是还是不清楚这样的设计可以怎样做缓存比较好:其实不一定要在客户端缓存,也可以在服务器端做静态缓存(以文件格式存在),只是不想再读取连到数据库。
  • 打赏
  • 举报
回复
你可以在相应的 html 片段“存在时才下载” --> 你可以在相应的 html 片段“不存在时才下载” 也就是先检查相应的 dom element 内部内容是不是空,是空的才下载片段 html 然后填充。 纠结xml问题、数据库问题、客户端保存问题,看似挺厉害似地,其实是回避真正的最可能的核心矛盾的一种“开发毛病”的习惯造成的。有经验的人可以第一时间判断出来。
  • 打赏
  • 举报
回复
以我的方式来看,假设把什么“数据库、客户端缓存”问题先去掉,我就会看你能不能在1小时内把真正核心的东西编写完成并且测试通过。如果不能,反过来这就说明你提出这个问题其实就是在拖延时间,那说明了我的判断也许是正确的。 希望你把精力放在主要的设计问题上。
  • 打赏
  • 举报
回复
"填充"HTML使用的也是 HTML,例如 <div></div>。而用不着什么 XML。 另外,从架构层次出发,那么核心技术层次中跟数据库毫无关系。你完全可以使用一个通用的、10行左右的c#小方法(函数)来屏蔽这种差别,先从普通的文件来读取、过半个月等其它一切都做完了,有闲功夫时再重构为读取 SQL Server数据库。 同样地意思,是否存在客户端这不是必须纠结的问题。且不说客户端通用的存储可能有几百k字节的大小限制,就算是速度问题,由于是“单页面”的,那么只需要下载一次到客户端 html 中插入就行了(你可以在相应的 html 片段“存在时才下载”),并且只需要在“上千个”模板“按需下载个别的,这也就决定了——至少在开发的头半年内你无需纠结这个问题。
言月秋 2015-07-21
  • 打赏
  • 举报
回复
引用 3 楼 jsophie 的回复:
1.写XML文件放在服务器 2.数据库中存这个XML文件的地址 3.后台读取这个文件,可以通过很多方式在空页面展现数据。 比如 ,XML+XSLT直接配置,不用写什么后台。 或者你自己写一个解析XML你定义格式的类,XML文件中给一个数据库SQL节点,各种列和控件显示标记节点。 这样的高效在于,以后只修改XML文件中的取数节点什么的就 可以了,不用编译。
+1 我也有类似方式实现过读取数据库加载tree节点,更改的时候只需更改数据库中的值,非常方便。
CTO 2015-07-21
  • 打赏
  • 举报
回复
直接静态页面不是更简单 - 有上千个这样的页面会更简单?
jsophie 2015-07-20
  • 打赏
  • 举报
回复
1.写XML文件放在服务器 2.数据库中存这个XML文件的地址 3.后台读取这个文件,可以通过很多方式在空页面展现数据。 比如 ,XML+XSLT直接配置,不用写什么后台。 或者你自己写一个解析XML你定义格式的类,XML文件中给一个数据库SQL节点,各种列和控件显示标记节点。 这样的高效在于,以后只修改XML文件中的取数节点什么的就 可以了,不用编译。
Justin-Liu 2015-07-20
  • 打赏
  • 举报
回复
看你的xml多大呗 大的话就做一个唯一标识作为内容区别判断标记,只有不同的时候才进行重新读取
  • 打赏
  • 举报
回复
Html5支持长期缓存
xxoo2007 2015-07-20
  • 打赏
  • 举报
回复
这个真的有意义吗?这样做是想解决什么问题? 既然是可以静态放到数据库的内容,直接静态页面不是更简单
CTO 2015-07-20
  • 打赏
  • 举报
回复
多谢。 的确是要考虑到HTML和XML的直接转换问题,查了一下XSLT,很多文章都是10年前的;现在使用asp.net 5.0了是否有更简洁的方法? 考虑一下有没有可能直接把HTML的内容直接放到数据库 (也就是说不使用XML和XSLT),这样就不用转换了。 HTML的内容参考如下: <body> <form action="demo_form.aspx"> First name: <input type="text" name="FirstName" value=""><br> Last name: <input type="text" name="LastName" value=""><br> <input type="submit" value="Submit"> </form> </body> 注意其中的firstname和lastname 的value并没有值,因为只是要生成网页布局。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧