六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 186|回复: 0

网站首页如何静态化

[复制链接]

升级  4.67%

58

主题

58

主题

58

主题

举人

Rank: 3Rank: 3

积分
214
 楼主| 发表于 2013-2-6 11:03:55 | 显示全部楼层 |阅读模式
网站是个投资类的门户,www.investide.cn 投资潮。
首页内容较多,有四屏多吧,数据库调用也很多,虽然数据库层做了缓存,页面上也使用了oscache,但还是感觉慢,于是想到做静态化。
用quartz来定时抓取动态页面的内容,生成静态页面
首页顶部的登录,用ajax来加载
<!-- 首页静态页的定时任务 ,每5分钟运行一次--><bean id="indexHtmlJobBean" class="com.dbcapital.job.HtmlJob" singleton="false"></bean><bean id="indexHtmlJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <property name="targetObject">    <ref bean="indexHtmlJobBean"/>    </property>    <property name="targetMethod">    <value>execute</value>    </property></bean><bean id="indexHtmlJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="indexHtmlJob"/><property name="cronExpression" value="0 0/5 * * * ?"/></bean><!-- 首页静态页任务配置结束 -->
public void execute() {String url="http://www.investide.cn/index.do";String filePath=PropertyUtil.getProperty("dbcapital.root.path")+"index.html";//创建文件File file=new File(filePath);try{if(!file.exists()){file.createNewFile();}}catch(IOException e){}//生成文件String content=UrlfileInfo.readUrlContent(url);if(!StringUtil.isEmpty(content)){DocUtil.writeFile(content,filePath);//写静态文件}}
public static String readUrlContent(String url){StringBuffer sb=new StringBuffer();try{  String   strLine;  URL   urlObj   =   new   URL(url);  InputStream   streamObj   =   urlObj.openStream();  InputStreamReader   readerObj   =   new   InputStreamReader(streamObj,"GBK");  BufferedReader   buffObj             =   new   BufferedReader(readerObj);  while((strLine   =   buffObj.readLine())!=null) sb.append(strLine+"\r");buffObj.close();  }catch(MalformedURLException   e){  System.err.println("url   error");  }catch(IOException   e){  System.out.println("IO   error");  } return sb.toString();}

public static boolean writeFile(String str,String filePath){boolean result=true;try{Writer fw = new OutputStreamWriter(new FileOutputStream (filePath),"GBK");fw.write(str);fw.close();}catch(IOException e){result=false;System.out.println("写文件失败");}return result;}
ajax加载登录代码
<span id="loginInfo">正在载入,请稍后...</span>
将login.jsp的状态加载到loginInfo里
theHREF = window.top.location.href.split('/');hostHREF='';for(i=3;i<theHREF.length;i++){hostHREF=hostHREF+'/'+theHREF[i];}setTimeout("fillData('/top_login.jsp?fromUrl="+hostHREF+"&t="+new Date()+"','loginInfo')",1000);
替换登录内容的js
function fillData(url,elementId){http_request=false;if(window.ActiveXObject){try{http_request=new ActiveXObject("MSXML2.XMLHttp"); }catch(e){try{http_request=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}} }else if (window.XMLHttpRequest) { // Mozilla, Safari, ...http_request = new XMLHttpRequest();http_request.overrideMimeType('text/xml');}http_request.onreadystatechange = function() {if (http_request.readyState == 4) {if (http_request.status == 200) {var str=http_request.responseText;document.getElementById(elementId).innerHTML=str;} else {alert("服务器忙,请稍候再试!");}} else {document.getElementById(elementId).innerHTML="载入中,请稍候...";}};http_request.open('GET', url+"&t="+new Date(), true);http_request.send(null);}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表