为了提高访问速度 降低服务器压力
领导说让用户访问静态的页面,而静态的页面是根据动态的生成的我的解决办法是
建立url 的连接 
生成输入流
在把这个流写到文件中 生成文件
相应的 要生成的url 放到配置文件中这个方法对于当时没有分页的页面很有用
但是现在一些分页的页面也要静态化
我该怎么办 
那个导航条连接 我没有办法处理了
还有就是 由于存在分页根本不知道 具体要访问多少个url

解决方案 »

  1.   

    这是我原来的实现public interface StaticHtml {

    /**
     * 会根据url_addr
     * 在path 下面生成静态页面
     * @param path 存放的文件夹路径
     * @param url_addr  所要生成的静态页的URL地址
     * @param reg  根据url 生成的pageName 的命名规则
     * @param encoding url 页面的 编码格式 如gkb gb2312
     * @return
     */
    public boolean doStaticHtml(String path, String url_addr,StaticHtmlPageNamingReg reg,String encoding);
    }
    package com.tol24.familyadmin.service.impl;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.MalformedURLException;
    import java.net.URL;import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;import com.tol24.familyadmin.service.StaticHtml;
    import com.tol24.familyadmin.service.StaticHtmlPageNamingReg;public class StaticHtmlImpl implements StaticHtml {

    private Log log = LogFactory.getLog(StaticHtmlImpl.class); public boolean doStaticHtml(String path, String url_addr,
    StaticHtmlPageNamingReg reg, String encoding) { String rLine = null;
    PrintWriter fileOut = null;
    InputStream ins = null;

    URL url;
    try {
    File file = new File(path);
    if (!file.exists()){
    file.mkdirs();
    }
    url = new URL(url_addr);
    log.debug("file path:"+path+ "\\"+reg.getPageName(url)+"\t url:"+url+"\tencoding:"+encoding);
    ins = url.openStream(); // 获取编码为gb2312的文件
    BufferedReader bReader = new BufferedReader(new InputStreamReader(
    ins, encoding));
    FileOutputStream out = new FileOutputStream(file+"\\"+reg.getPageName(url));
    OutputStreamWriter writer = new OutputStreamWriter(out, encoding);
    fileOut = new PrintWriter(writer); // 循环取取数据,并写入目标文件中
    while ((rLine = bReader.readLine()) != null) {
    String tmp_rLine = rLine;
    int str_len = tmp_rLine.length();
    if (str_len > 0) {
    fileOut.println(tmp_rLine);
    fileOut.flush();
    }
    tmp_rLine = null;
    }
    url = null;
    return true;
    } catch (MalformedURLException e) {
    log.error("静态化页面出错 url 不正确:",e);
    e.printStackTrace();
    } catch (IOException e) {
    log.error("静态化页面出错:"+e);
    e.printStackTrace();
    } catch (Exception  e) {
    log.error("静态化页面出错:", e);
    e.printStackTrace();
    } finally {// 关闭资源
    fileOut.close();
    try {
    ins.close();
    } catch (IOException ex) {
    // 关闭输入流出错
    return false;
    }
    } return false;
    }}
      

  2.   

    谢谢
    速度不敢shuo 但是压力肯定是动态的多得多再顶
      

  3.   

    一般访问量的的网站都会有静态缓存,一天数据变更便把缓存清掉,一般就是页面地址后面加参数来区别每个页的不同,不过如果是要区别客户端的话,缓存就没用了,因为要视客户端传来的sessionID不同而现实不同~~~楼主加油
      

  4.   

    自己顶一下
    觉得---
    theforever(碧海情天) ( ) 信誉:100    Blog  说的很有道理
    就是不能在原来动态页面的基础上再包装一层 
    而是入侵到了原来的动态页面里面看看还有没有其他的方法 
      

  5.   

    lzmhehe(小飞飞) ,你可以参考一下CSDN这个方法,看看每打开一个帖子之后它的页面地址,比如: 5314042.xml?temp=.2213404  想想它的原理。
      

  6.   

    刚才回答一个类似问题时说得更详细点,拿回来放在这再说一下吧主要就是先在后台进行分页统筹,算出一共能有多少分页,这样才能在每一个页面(包括第一页)放上“最后一页”这样的链接。
    比如算出共有N页,先把每一页结果生成,然后加入导航条(或者是先加,或者是一上一下都加,自己看着办):“首页”:指向页面1
    如果本页>1,则“上一页”=指向本页-1对应的页面,否则“上一页”灰色不可用。
    如果本页<N,则“下一页”=指向本页+1对应的页面,否则“下一页”灰色不可用。
    “末页”:指向页面N
      

  7.   

    如果内容是越来越多的。
    那么,第一天生成的静态页面。到了第2天,由于内容多了,那第一天生成的最后连接的url就不对啦。
      

  8.   

    那个导航条连接 我没有办法处理了
    ================
    LZ提到这个导航条,我觉得应该用内嵌窗口来做,生成文件时,独立生成一个导航条文件,再在生成的其它分页静态页面上内嵌它就行了,再结合我上面说得方法,简直是。。
    自己想想都有点佩服自己啊,YY中。。请勿打扰!
    哈哈
      

  9.   

    谢谢 
    liaohaiying(大菜) ( ) 信誉:100    Blog theforever(碧海情天) ( ) 信誉:100    Blog 根据你们的说得
    我现在的解决方案是
    先做了一个模版 这个是一个jsp页面 显示了除从数据库读取出来的分页内容和分页导航外的所有东西,而这两个地方用标签代替。再读取这个模板,读取数据库,计算生成的页面的数量和页面的名称,替换上两处的标签这个有一个缺点就是 静态化的时候不是 在原来的基础上作包装,而是侵入其中了这个贴
    我就结了
    如还有好的想法 ,我在开贴放分
      

  10.   

    谢谢 
    liaohaiying(大菜) ( ) 信誉:100    Blog theforever(碧海情天) ( ) 信誉:100    Blog 根据你们的说得
    我现在的解决方案是
    先做了一个模版 这个是一个jsp页面 显示了除从数据库读取出来的分页内容和分页导航外的所有东西,而这两个地方用标签代替。再读取这个模板,读取数据库,计算生成的页面的数量和页面的名称,替换上两处的标签这个有一个缺点就是 静态化的时候不是 在原来的基础上作包装,而是侵入其中了这个贴
    我就结了
    如还有好的想法 ,我在开贴放分
      

  11.   

    谢谢 
    liaohaiying(大菜) ( ) 信誉:100    Blog theforever(碧海情天) ( ) 信誉:100    Blog 根据你们的说得
    我现在的解决方案是
    先做了一个模版 这个是一个jsp页面 显示了除从数据库读取出来的分页内容和分页导航外的所有东西,而这两个地方用标签代替。再读取这个模板,读取数据库,计算生成的页面的数量和页面的名称,替换上两处的标签这个有一个缺点就是 静态化的时候不是 在原来的基础上作包装,而是侵入其中了这个贴
    我就结了
    如还有好的想法 ,我在开贴放分