日期:2014-05-18  浏览次数:20675 次

前辈们提提(java)生成静态页方案
我现在在做一个访问量比较大的网站,现在遇到一问题,随着数据表记录越来越大,查询变得很慢,像大型网站都是生成静态页面的,我有些疑问:
1.怎么生成静态页面呢,如首页,列表怎么生成?内容可以通过做一个模块来生成,因为首页比较复杂,该怎么生成?

2.生成静态网页之后数据库中的是怎么存的呢?要存些什么信息呢,或者静态页面之间是怎么联系起来的

3.怎么更新呢,如果生成静态页面了之后,怎么更新列表和首页呢



------解决方案--------------------
通过ajax 局部更新
------解决方案--------------------
你应该从提高数据库性能方面考虑! 常查询的表要建好索引. 当然你也要确认你的代码质量没问题.
------解决方案--------------------
1.怎么生成静态页面呢,如首页,列表怎么生成?内容可以通过做一个模块来生成,因为首页比较复杂,该怎么生成? 
一般用freemarker生成静态页面.
静态页面的生成是有一定设计规律的:
首页是尽量使用静态文件,现在有些公司都使用“所见即所得”的编辑方式,就是使用网上的网页编辑器(Ewebeditor,FCKeditor等)对首页等进行编辑,之后通过文件流写入固定文件中。
列表一般都是动态提取的,也有生成静态的。例如电影网站有发布功能,就是将一定时间中要发布的电影列表生成静态文件,这也是为了缓解数据库压力。
记录(一条新闻,一条影讯)的具体内容一般是使用静态页面。因为涉及的图片和文字比较多,从数据库提取会慢。
具体方式:
(1)没有发布,在添加时就让用户看到。在添加记录时,相关的图片,说明文字等都要填写全,在保存时将内容生成静态文件,并记录文件的路径,在用户浏览时,链接到静态文件。
(2)有发布模块管理。添加人只负责填写全信息,由管理员负责发布内容,生成文件,用户只能看到发布的文件,新录入的文件是看不到的。

2.生成静态网页之后数据库中的是怎么存的呢?要存些什么信息呢,或者静态页面之间是怎么联系起来的 
数据库存的是静态页面的路径,在用户浏览时,看到的是基本信息,链接的是详细信息。

3.怎么更新呢,如果生成静态页面了之后,怎么更新列表和首页呢 
在修改时重新生成静态页面。或在重新发布时生成静态页面。
------解决方案--------------------
给你个思路,你们的新闻页面应该是个固定模板,你把这个固定模板一个些静态的和动态的东西都放到stringBuffer类里面,然后用io输出流可以生成一个完整的 html页面,动态的从数据库读取就可以了,新生成的html页面用当前日期格式化一下(唯一),这样每篇文章不就对应一个静态页了吗?
给你一点代码:StirngBuffer bf = new StringBuff();
bf.append("<%@ page contentType='text/html; charset=gb2312'%>");
bf.append("<html>");
bf.append("<head>")
bf.append("<title>'"+articleInfo.getWebName+"'</title>");
bf.append("</head>");
bf.append("<body>");
bf.append("</body>");
bf.append("</html>");
然后用io接收bf生成静态页就可以了,还闲不够的话也可以把生成的静态页的名字,文章id之类的动态生成一个js,只要页面加载这个js生成相应的表格就可以了,这样 不管读哪的文章只是读取了一次js而已,服务器唯一的压力就是生成文章的时候,重新刷新了一下js而已,希望这个思路对你有帮助
呵呵..

------解决方案--------------------
up
------解决方案--------------------
探讨
我己经建索引了,但是几十万行的数据,查询起来总是慢的吧

------解决方案--------------------
同意5楼的观点:
首页尽量做成碎片方式,比如:分成 头 脚 ,栏目1列表,栏目2列表等。便于维护和更新,显示的时候使用ssi组件拼装在一起,门户往往这么做
数据库尽量设计得简单,尽量不要存储冗余字段,静态页面之间的链接是在生成静态页面的时候就生成的。
------解决方案--------------------
如何处理分页显示?
------解决方案--------------------
如果没有什么特殊要求的话,重写jsp中的out(JswWriter)对象是最简单快捷的实现方式
------解决方案--------------------
1.怎么生成静态页面呢,如首页,列表怎么生成?内容可以通过做一个模块来生成,因为首页比较复杂,该怎么生成? 
你学一下velocity,freemarker之类的模板技术,用它来做三个模板页面,一个是首页,一个是列表页,一个是内容页

2.生成静态网页之后数据库中的是怎么存的呢?要存些什么信息呢,或者静态页面之间是怎么联系起来的 
数据库中不需要保存静态页面的信息

3.怎么更新呢,如果生成静态页面了之后,怎么更新列表和首页呢 
你可以在后台管理中让用户手动点击按钮来生成静态页,或者用一个定时器来自动定时生成静态页,或者每次有内容更新时均调用静态页面生成
------解决方案--------------------
mark
------解决方案--------------------
mark

------解决方案--------------------
读index.jsp的内容然后重新命名为index.html
java中有一个方法可以读取URL的内容。

------解决方案--------------------
1 列表项可以,在增加项目时候分别生成相应的静态页面,
 显示的主页面可以用jsp页面来包含各个不同学的列表表态页面。

别用ajax,否则会更慢。