前台一次性加载完数据,然后在刷新页面不会向数据库发送请求了,数据还是能加载,请问怎么实现。java web

解决方案 »

  1.   

    这是我的想法,你看看行不。我假如在前台页面用jquery构造了一个ztree。把ztree放到一个div中。在页面加载的时候通过jquery判断这个div中有没有值,如果没有就用ajax去获取数据,构造ztree,要是这个div中有数据就不在执行,这样就会去访问数据库了。你试试这种方法可行不。
      

  2.   

    这个是今天项目经理让我想的,这是一个优化方面的,就是减少数据库的访问量,用的就是ztree,就是一次性加载,在刷新无加载,他跟我说跟static的机制差不多,可我没想明白,求解。
      

  3.   

    如果只是不查数据库,可以用OSCache等缓存机制。
    如果不想从服务器下载数据,那就只能在浏览器的Cookies里保存数据了。
      

  4.   

    前台一次性加载完数据,(所有需要的数据查询数据库)
    (把这些数据放入缓存里 ehcache memcached等缓存服务)
    然后在刷新页面不会向数据库发送请求了,(网页刷新请求都是从缓存中去取数据)
    (数据在加载回来)
    (更新数据库的时候再对缓存中的数据更新)一般常用于首页,查询页等数据量大的页面.基本上是这个流程.访问量大的可以采用缓存集群
    static 也可以   不过大数据量还是选择一个缓存架构比较好.
    下面手写代码只是个例子public static List<String> cahcheList = null;public String excute(){
        //执行返回数据给前台    List<String> returnList = getData();}public List<String> getData(){
       if(null != cacheList){
              return cacheList;
       }else{
          cacheList = getDataFromDB();
          return cacheList;
       }
    }public List<String> getDataFromDB(){
        //从数据库获取数据返回
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("n");
        return list;
    }不过看你的需求  大概static 就可以了..数据量不是很大
    不过有更新/添加/或者删除你都需要维护这个static 的缓存变量.
      

  5.   

    static 言外意就是  启动服务器就进行查询    乱猜的
      

  6.   

    刷新页面本地的树结构是肯定会没有的除非你自己做了缓存,好像就10楼说到关键的地方了,浏览器做缓存的只有cookie和html5的本地存储。可是这好像不是楼主要的东西。
    不在本地存的话,刷新,不加载,是不可能的!
      

  7.   

    1.用数据库缓存
    2.用程序把树可以写成静态文件(html)
      

  8.   

    数据与页面分离,使用xml传送数据,这样可以对数据单独缓存