MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 前辈们提提(java)生成静态页方案,该如何处理

前辈们提提(java)生成静态页方案,该如何处理(4)

www.MyException.Cn  网友分享于:2015-08-27  浏览:54次

------解决方案--------------------
up
------解决方案--------------------
缓存...CDN
------解决方案--------------------
学习~~~~
------解决方案--------------------
ajax也不是适合任何地方的~~
------解决方案--------------------
这个东西很难呀


------解决方案--------------------
10万的数据都慢,那说明你的sql的执行效率太低了,或者是数据模型有问题。
------解决方案--------------------
把url rewrite一下就可以了
------解决方案--------------------
探讨
引用:
我己经建索引了,但是几十万行的数据,查询起来总是慢的吧


几十万行就慢???

你分页了没???

------解决方案--------------------
up
------解决方案--------------------
mark
------解决方案--------------------
得隔断时间生成你的静态页面,把你的生成页面,用一些java函数来生成,这样
StringBuffer.append("<div>sdss</div>");
隔断时间生成一次。
------解决方案--------------------
来学习
------解决方案--------------------
用模板,比如velocity

最重要的是生成列表~~~~,如果数据少,可以每次全部生成,如果多的话,嘿嘿。最好以时间的方式来生成
------解决方案--------------------
在关注中...
也很想明白这方面的知识.
------解决方案--------------------
mark
------解决方案--------------------
路过!
------解决方案--------------------
... ... 做廣告的都來這里了。。。
------解决方案--------------------
可以考虑cache,缓存之流。像csdn一样,3分钟更新下数据
------解决方案--------------------
给你一个我做着玩的CMS中的解析自定义模板标签的代码片段 总体思想就是自己定义一套标签 然后用正则解析模板后替换成最终数据
Java code

package parser;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Vector;

import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternMatcher;
import org.apache.oro.text.regex.PatternMatcherInput;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;

import vo.ListItem;
import db.Conn1;
import util.TDate;

public class IndexParser{

    private List<String> bigtext=new Vector<String>();
    private String regex1="(\\{pannycms:list\\s+typeid=\\d+\\s+order=[a-zA-Z]+\\s+offset=\\d+\\s+length=\\d+\\s+ifpic=\\d\\s*\\}[^\\{]*\\{/pannycms:list\\})";
    private String regex2="\\{pannycms:list\\s+typeid=(\\d+)\\s+order=([a-zA-Z]+)\\s+offset=(\\d+)\\s+length=(\\d+)\\s+ifpic=(\\d)\\s*\\}([^\\{]*)\\{/pannycms:list\\}";
    private String regex3="(\\{pannycms:menulink\\s+typeid=(\\d+)\\s*/\\})";
    private String regex4="(\\{pannycms:sectionurl\\s+typeid=(\\d+)\\s*/\\})";

    public String parser(String template)
    {
        TDate td=new TDate();
        //获取一个链接
        Conn1 c=new Conn1();
        //先把所有的列表部分装进list bigtext
        Perl5Compiler compiler=new Perl5Compiler();
        Pattern pattern=null;
        try {
            pattern=compiler.compile(regex1,Perl5Compiler.CASE_INSENSITIVE_MASK);
        } catch (MalformedPatternException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PatternMatcher matcher=new Perl5Matcher();
        PatternMatcherInput pmi=new PatternMatcherInput(template);
        while(matcher.contains(pmi,pattern))
        {
            MatchResult result=matcher.getMatch();
            //System.out.println(result.group(1));
            bigtext.add(result.group(1));
            for(String ss1:bigtext)
            {
                PatternMatcherInput pmi1=new PatternMatcherInput(ss1);
                ListItem lt=new ListItem();
                Pattern pattern1=null;
                try {
                    pattern1=compiler.compile(regex2,Perl5Compiler.CASE_INSENSITIVE_MASK);
                } catch (MalformedPatternException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                while(matcher.contains(pmi1,pattern1))
                {
                    MatchResult result1=matcher.getMatch();
                    lt.setTypeid(Integer.parseInt(result1.group(1)));
                    lt.setOrder(result1.group(2));
                    lt.setOffset(Integer.parseInt(result1.group(3)));
                    lt.setLength(Integer.parseInt(result1.group(4)));
                    lt.setIfpic(Integer.parseInt(result1.group(5)));
                    lt.setCirclePart(result1.group(6));
                }
                //从数据库获取应该被替换成的最终文本
                String orderway="";
                String tiaojian=" where typeid="+lt.getTypeid();
                String temptext="";
                String circlePartold=lt.getCirclePart();
                if(lt.getOrder().equals("tuijian"))
                {
                    orderway=" order by tuijian DESC,addTime DESC ";
                }
                if(lt.getOrder().equals("date"))
                {
                    orderway=" order by addTime DESC ";
                }
                if(lt.getIfpic()==1)
                    tiaojian+="and ifpic=1 ";
                ResultSet r1=c.excutequery("select * from news"+tiaojian+orderway+" limit "+lt.getOffset()+","+lt.getLength());
                try {
                    while(r1.next())
                    {
                        circlePartold=circlePartold.replaceAll("#pannycms:smallpic#", r1.getString("smallpic"));
                        circlePartold=circlePartold.replaceAll("#pannycms:url#", r1.getString("filepath"));
                        circlePartold=circlePartold.replaceAll("#pannycms:title#", r1.getString("title"));
                        td.setTimestamp(r1.getInt("addTime"));
                        String datetime=td.getTDate("Y-m-d H:i:s");
                        circlePartold=circlePartold.replaceAll("#pannycms:date#",datetime);
                        circlePartold=circlePartold.replaceAll("#pannycms:click#",r1.getString("click"));
                        temptext+=circlePartold+"\r\n";
                        circlePartold=lt.getCirclePart();
                    }
                } catch (SQLException e){
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //执行替换,ss1替换成最终文本
                //System.out.println(temptext);
                template=template.replace(ss1,temptext);
            }
        }
        //开始替换所有导航菜单
        Pattern pattern2=null;
        try {
            pattern2=compiler.compile(regex3,Perl5Compiler.CASE_INSENSITIVE_MASK);
        } catch (MalformedPatternException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PatternMatcherInput pmi2=new PatternMatcherInput(template);
        while(matcher.contains(pmi2,pattern2))
        {
            MatchResult result2=matcher.getMatch();
            String ss3=result2.group(1);
            String menulink="";
            int typeid=Integer.parseInt(result2.group(2));
            ResultSet r3=c.excutequery("select menulink from newstype where typeid="+typeid);
            try {
                while(r3.next())
                {
                    menulink=r3.getString("menulink");
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            template=template.replace(ss3,menulink);
        }
        //开始替换所有栏目地址链接
        Pattern pattern3=null;
        try {
            pattern3=compiler.compile(regex4,Perl5Compiler.CASE_INSENSITIVE_MASK);
        } catch (MalformedPatternException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PatternMatcherInput pmi3=new PatternMatcherInput(template);
        while(matcher.contains(pmi3,pattern3))
        {
            MatchResult result3=matcher.getMatch();
            String ss4=result3.group(1);
            String path="";
            int typeid=Integer.parseInt(result3.group(2));
            ResultSet r4=c.excutequery("select path from newstype where typeid="+typeid);
            try {
                while(r4.next())
                {
                    path=r4.getString("path");
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            template=template.replace(ss4,path);
        }
        //关闭链接
        c.close();
        return template;
    }
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有