对于页面常用不变的数据如何缓存?缓存sql结果或是页面

syhan 2007-03-23 05:53:29
最近做项目的时候遇到一个问题,对于一个经常被访问的页面,上面含有若干需要动态从数据库读出的数据(可能是不变的),如果每访问一次页面就对数据库进行一次交互,代价是不是太大了?我是想对这些常见的结果进行缓存,google了一下好像有缓存sql和页面缓存,请教一下那种方法好,对数据库的开销最小,我的数据库是mysql,还有大家有一些什么其他更好的建议也请一并给出,谢谢:)
...全文
367 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangbo520 2007-03-29
  • 打赏
  • 举报
回复
是谁说缓存标签是相对于用户的?liaohaiying(超菜)的两个红星真是白得了,缓存标签是可以指定作用域的,可以是session,application,page等,其中application就是全局性的。
syhan 2007-03-23
  • 打赏
  • 举报
回复
嗯,对,我要的效果就是如liaohaiying(大菜) 所说的,但是如何将数据放到服务器内存中(spring乎?),并且在数据有更新的时候通知服务器更新呢,难不成要在服务器端运行一个daemon进程不成?其实就是数据读出的这个过程应该在什么时候进行,如何进行?

to xiangbo520(充栋汗牛)
oscache我看了,很酷,有些小的页面可行,谢谢你
liaohaiying 2007-03-23
  • 打赏
  • 举报
回复
页面缓存是相当于用户的,这个作用不是很大,因为这样每个用户一进来还是要先从数据库中取出数据再缓存。
解决方法是把数据存放到服务器的内存,这样当有用户取数据就从内存里取,因为用户从数据库取数据首先取出后还是先放到内存的,你先把数据放到内存那么就不用到数据库取了。
还有一种更简单的方法就是把短时间内不变的数据库内容读出写成HTML文件,这样用户就直接访问HTML文件,然后程序自动定期或当数据库有新数据加入时更新这个HTML文件就行了
xiangbo520 2007-03-23
  • 打赏
  • 举报
回复
使用缓存标签oscache或者apache common cache,使用起来很方便,只需要在你想缓存的程序段两端加上标签,并设置一些参数,如缓存时间,声明周期等,就可以了
craig_wolfdon 2007-03-23
  • 打赏
  • 举报
回复
你的意思是用pageContext?这个是随页面的生成而生成随页面的消失而消失的把,
syhan 2007-03-23
  • 打赏
  • 举报
回复
如果按楼上的做法的话数据应该会在整个浏览器进程中,那样的还不如使用页面缓存的好,不过还是多谢建议了,继续球其他的方法和建议:)
craig_wolfdon 2007-03-23
  • 打赏
  • 举报
回复
这样做你看可不可以,自己在页面做一个缓冲器,把经常用的数据存在这个容器(比如vector)里面,然后存在session里面或者application里面,然后以后需要的时候先直接查找这个容器,假如容器里面没有再去连数据库, 就类似于cache一样,

81,122

社区成员

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

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