web项目首页定时更新问题

fufengrui 2011-11-10 08:56:05
SSH的项目,首页有推荐的栏目,需要执行数据库查询操作,是否有好的办法,能够使系统启动时,首页第一次进行初始化,以后每隔固定时间,比如2小时,进行更新,而不是所有用户每次访问首页都执行查询,获取推荐栏目,进而提高系统性能,欢迎各位一起探讨。
...全文
128 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
有相关的资料没,不熟悉这块

[Quote=引用 13 楼 yanmushi 的回复:]

我觉得,你可以把前台页面中的加载信息的地方抽取处理。

然后固定时间把它们重新赋值,这样把页面做成静态的。
[/Quote]
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
也有道理,我就只想把首页静态化一下,因为访问量大,而加载又慢

[Quote=引用 12 楼 kouyisc 的回复:]

有人这么说:

引用
速度上一般从快到慢是本地缓存->静态页面->缓存的动态页面->动态生成。静态页面是很快,但是如果是动态生成的静态页面,其刷新代价非常重要。这个代价包括编码代价和运行代价。
首先,我们要编写静态化页面,那么就不能直接用JSP或模板。只能输出HTML文件。而如何输出、何时输出、输出不及时造成的延迟是否会对业务产生威胁都是问题。所以在编写上很麻烦。也许有人有简单的,不过……
[/Quote]
艳沐石 2011-11-10
  • 打赏
  • 举报
回复
我觉得,你可以把前台页面中的加载信息的地方抽取处理。

然后固定时间把它们重新赋值,这样把页面做成静态的。
kouyiSC 2011-11-10
  • 打赏
  • 举报
回复
有人这么说:

引用
速度上一般从快到慢是本地缓存->静态页面->缓存的动态页面->动态生成。静态页面是很快,但是如果是动态生成的静态页面,其刷新代价非常重要。这个代价包括编码代价和运行代价。
首先,我们要编写静态化页面,那么就不能直接用JSP或模板。只能输出HTML文件。而如何输出、何时输出、输出不及时造成的延迟是否会对业务产生威胁都是问题。所以在编写上很麻烦。也许有人有简单的,不过总比直接用JSP麻烦很多是可以肯定的。这样会造成开发时间延长。
其次是运行代价。静态化页面只适合超量访问,而极少变更最好不变更的情况。每次重新生成页面所产生的计算量、IO处理是非常大的,弄不好到时候CPU不干别的,全去生成页面了。如果一个网站的静态页面要不断反复地重新生成,那么还是不要静态化的好。
所以
我觉得如果绝大部分页面只生成一次,同时访问量非常非常大。那么可以考虑静态化。如果部分页面需要定时生成,页面缓存比较好。页面变动频繁,还是老老实实用动态页面写吧。
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
谢谢
[Quote=引用 9 楼 kouyisc 的回复:]

http://wenku.baidu.com/view/4ada843243323968011c922a.html?from=related

静态化和缓存的说明。。。大部分讲的oscache缓存的实现。。。
[/Quote]
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
http://www.javawind.net/index.jspx,这个网站就挺快的
kouyiSC 2011-11-10
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/4ada843243323968011c922a.html?from=related

静态化和缓存的说明。。。大部分讲的oscache缓存的实现。。。
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
找到了个关键词:jsp静态化,有这方面的经验没,求高手指点
kouyiSC 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fufengrui 的回复:]
详细点呗


引用 3 楼 xiaoqiuwyh 的回复:

用一个线程可以实现吧?
[/Quote]

我想线程的方式,和1楼及4楼的方式最终都差不多。。。线程只是一个监控者。。。不是实现方。。

线程和定时器都是为了两小时后执行更新操作的调用。。。

而实现方式,jsp静态化和缓存方式可以二选一。。。个人觉得静态化比较适合lz的需求。。。因为你的页面两小时内都不会被更新。。。。
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
详细点呗

[Quote=引用 3 楼 xiaoqiuwyh 的回复:]

用一个线程可以实现吧?
[/Quote]
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
莫非英雄所见略同

[Quote=引用 4 楼 magong 的回复:]

引用楼主 fufengrui 的回复:
而不是所有用户每次访问首页都执行查询,获取推荐栏目,

1 用过滤器或Struts拦截器完成
2 对用户访问的页面静态化,即将结果页面保存为HTML文件,缓冲
3 在Session中记录上次静态化的时间戳,拿当前系统时间去比对,若超过2小时,则重新访问数据库并静态化结果页面,若未超过2小时,直接返回缓存的HTML文件。

哦,写完后发现和1楼……
[/Quote]
magong 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 fufengrui 的回复:]
而不是所有用户每次访问首页都执行查询,获取推荐栏目,
[/Quote]
1 用过滤器或Struts拦截器完成
2 对用户访问的页面静态化,即将结果页面保存为HTML文件,缓冲
3 在Session中记录上次静态化的时间戳,拿当前系统时间去比对,若超过2小时,则重新访问数据库并静态化结果页面,若未超过2小时,直接返回缓存的HTML文件。

哦,写完后发现和1楼大同小异。
xiaoqiuwyh 2011-11-10
  • 打赏
  • 举报
回复
用一个线程可以实现吧?
fufengrui 2011-11-10
  • 打赏
  • 举报
回复
是栏目内容的更新,比如栏目内容新添了数据,就隔两个小时后台查询数据库,然后定时更新一次,用户访问首页的时候就不需要每次都执行数据库的查询操作。我觉得方案一就不错,我也初步打算这么做

[Quote=引用 1 楼 trocp 的回复:]

比较感兴趣的是:你更新的是什么东西,更新如循环,是几个首页循环更新还是随机更新


方案可以这样:
一:
你把首页查询到的数据做个缓存,就在对应JSP或Action的static区域。然后启动一个定时器,如果2小时内则直接取缓存,超时则执行查询。
[/Quote]
oO临时工Oo 2011-11-10
  • 打赏
  • 举报
回复
比较感兴趣的是:你更新的是什么东西,更新如循环,是几个首页循环更新还是随机更新


方案可以这样:
一:
你把首页查询到的数据做个缓存,就在对应JSP或Action的static区域。然后启动一个定时器,如果2小时内则直接取缓存,超时则执行查询。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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