`
hyperprice
  • 浏览: 50793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

首页静态化

    博客分类:
  • JSP
阅读更多
关于页面静态化的处理,自己有一下几点理解,还请多多指教。

1、首页可以采用freemarker来静态化,也可以采用流来处理,还可以通过oscache等方式来处理。

2、一些二级页面和一些动态页面可以采用urlrewriter来实现伪静态+缓存来实现速度上的优化。一方面可以针对seo优化,用户体验上也不错。

3、还是针对第二点,一些二级页面和一些动态页面也都可以使用freemarker来做处理。速度上差距不大,因为2有缓存的支持。

做了个简单的例子,针对访问页面的静态化,例如访问index.jsp则生成index.html然后执行跳转。代码如下:

public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		String currentURL = req.getRequestURI();
		// 得到访问文件名. 例如 /index.jsp
		String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
				currentURL.length());

		// 对文件名进行拆分. 先得到/index 然后在得到index
		String splitName = targetURL.split("\\.")[0];
		String name = splitName.split("/")[1];
		String fileName = name + ".html";
		String path = protDirPath + fileName;

		// 判断文件是否存在. 存在的话则执行跳转. 否则执行生成.
		File file = new File(path);
		if (!file.exists()) {
			System.out.println("生成HTML文件,执行跳转..");

			PrintWriter out = response.getWriter();
			FileCaptureResponseWrapper responseWrapper = new FileCaptureResponseWrapper(
					(HttpServletResponse) response);
			chain.doFilter(request, responseWrapper);
			String html = responseWrapper.toString();
			System.out.println(html);
			// 得到的html页面结果字符串
			responseWrapper.writeFile(path);
			responseWrapper.writeResponse(out);
			res.setHeader("REFRESH", "0;URL=" + req.getContextPath() + "/"
					+ fileName);
		} else {
			System.out.println("目标文件已经存在,执行跳转...");
			res.setHeader("REFRESH", "0;URL=" + req.getContextPath() + "/"
					+ fileName);
		}
	}

public class FileCaptureResponseWrapper extends HttpServletResponseWrapper {

	private CharArrayWriter output;

	public String toString() {
		return output.toString();
	}

	public FileCaptureResponseWrapper(HttpServletResponse response) {
		super(response);
		output = new CharArrayWriter();
	}

	public PrintWriter getWriter() {
		return new PrintWriter(output);
	}

	public void writeFile(String fileName) throws IOException {
		FileWriter fw = new FileWriter(fileName);
		fw.write(output.toString());
		fw.close();
	}

	public void writeResponse(PrintWriter out) {
		out.print(output.toCharArray());
	}
}



web.xml的配置就不多说了,把过滤配上后然后即可实现所有jsp生成html,针对一些二级页面或首页来优化都不错。
分享到:
评论
7 楼 mushme 2010-12-21  
首页可以用quartz做个定时任务,定时来生成首页静态页
6 楼 nighthawk 2010-11-21  
伪静态还能实现速度上的优化?
SEO部分不必过分强调伪静态了,都21世纪了,搜索引擎没你想的那么傻。
唯一有用的就是用户体验。
要真从效率上考虑,搞静态化就搞成真的,又不难。要不就上缓存。
5 楼 hjtracy1 2010-11-21  
我感觉楼主的方法貌似没有考虑数据刷新 这样做只能实现数据不常更新的网站
4 楼 xly_971223 2010-05-31  
直接用squid缓存就行了
3 楼 181054867 2010-05-31  
希望给也更新管理操作,一个完整的实用例子,期待!
2 楼 sumaolin 2010-05-30  
不错啊,得试试啊
1 楼 xiangkun 2010-05-30  
这个有考虑到即时性吗?

相关推荐

    首页静态化步骤

    在Web开发中,首页静态化是常见的性能优化手段。 首先,我们需要了解动态首页和静态首页的区别。动态首页是由服务器端的脚本(如PHP、JSP或ASP.NET)实时生成的,每次请求都会根据数据库中的数据动态生成页面内容。...

    通用首页静态化工具-可以把首页转化为静态页面

    总的来说,“通用首页静态化工具”是针对动态首页优化的一种解决方案,它可以帮助提高网站性能和SEO效果,但需要根据实际需求和环境进行合理配置和使用。在使用该工具前,应确保服务器环境支持所需的技术,并了解其...

    首页静态化(含全站) for discuz7.0.rar

    标题 "首页静态化(含全站)for discuz7.0.rar" 提示我们这是一个针对 Discuz! 7.0 版本的插件,旨在实现论坛首页及全站的静态化功能。Discuz! 是一款非常流行的开源社区论坛软件,它提供了丰富的功能和高度的可定制...

    Zblog首页静态化插件下载

    Zblog首页静态生成插件非常利于首页的静态化,是zblog必备的一款插件资源,例如www.meiguiyou.com博客上就有比较好的seo,通过使用首页静态化能够实现搜索引擎的快速收录,对于seo非常有利,现在提供下载。

    首页静态化 for phpwind.rar

    PW首页静态化 有很多人说系统自带首页游客缓存;但是那依然是通过PHP加载的HTML而且还要进行很多判断、触发、等其他辅助功能, HTML文件的执行速度是PHP文件的30倍以上,如果通过PHP加载的HTML再辅助执行其他功能...

    网站首页静态化-gradle-springMVC-Quartz

    1、首先配置setenv.bat set JAVA_HOME=E:\tools\JDK7-64\JDK set GROOVY_HOME=E:\tools\groovy-2.1.9 set GRADLE_HOME=E:\tools\gradle-2.2.1 set ECLIPSE_HOME=E:\tools\ECLIPSE-JEE-64BIT ...

    ASP.NET静态化首页

    .NET静态首页,.NET生成静态首页,动态网站静态化, 原理是 获取网站首页HTML内容 保存至HTML页。

    httpclient 静态化网站 project

    【描述】"静态化首页 子页 一网打尽"表示这个项目不仅限于抓取和静态化网站的首页,还包含了处理子页面的能力。这意味着它可能包含了遍历网站链接,递归抓取所有相关页面的逻辑。静态化网站的过程通常是将动态生成的...

    ecshop2.7.2完全静态化方案V1.1

    "完全静态化方案V1.1"是针对该版本的一个优化策略,旨在提高网站性能,降低服务器负载,提升用户体验,尤其是面对高访问量时。静态化是一种将动态网页转化为静态HTML的技术,它可以显著提升页面加载速度,减少数据库...

    静态化,httpclient

    httpclient 核心方法,采用hrrpclient 实现静态化,网站首页,将动态页面静态化为静态页面。或者爬取其他网页的数据信心

    HTML静态化

    例如,首页可以静态化,而用户个人中心则保持动态。 3. **Ajax异步加载**:对于少量动态内容,可以在HTML页面加载完成后,使用Ajax异步请求获取并动态插入。 总之,HTML静态化是提高网站性能的重要手段,它与动态...

    DEDE织梦CMS Tag静态化 插件 SEO工具

    2. **生成Tag首页静态页**:Tag首页通常显示与特定Tag相关的所有文章摘要,生成静态页面可以进一步提升访问速度,提供更好的用户体验。 3. **备份原始文件**:在进行任何系统或插件更新前,备份原始文件是至关重要...

    asp.net 全站静态化源码

    vs2008 access / sqlserver2005 1.图片模块:图片上传,自动裁切缩略图以及图片信息管理模块。无限极栏目。...5.整站静态页生成功能,可生成首页,栏目页,内容页全站静态化以降低服务器负担。 详见程序说明

    ecshop宇宙通用版页面完全静态化插件

    例如ecshop的首页index.php,如果只是请求index.php,那么显示静态页面就可以了,但是如果是index.php?u=10(u=10表示这个客户是用户ID为10的用户推荐的),这样的就不能静态化,因为程序需要这个参数 3, 添加配置...

    HTML静态化功能方法共享

    优点:提高网页的打开速度 原理:将动态数据添加到静态页面,存储下来,如果动态数据无更新添加删除...触发功能不再首页触发, 这样任何情况下首页调取的内容都是静态的,提高浏览速度 附件为单独程序,直接运行就可

    java 静态化完整示例

    jsp 通过模板生成 shtml 可生成静态shtml首页页面 列表页即时生成[信息添加/删除/更新时,列表页自动更新] 静态分页功能* 按当前日期生成对应目录[方便管理和日后维护]

    Magento Category Filter Url静态化插件

    在Magento中,商品分类管理是核心功能之一,而“Magento Category Filter Url静态化插件”则是为了优化用户体验和搜索引擎优化(SEO)而设计的。这个插件的主要目标是将分类筛选后的URL从动态形式转化为静态形式,...

    php页面静态化学习笔记.doc

    局部静态化适用于某些高访问量但变化不频繁的页面,如首页、栏目页等;全局静态化则适用于整个网站,但可能需要较大的存储空间。 为了测试服务器性能和页面静态化的效果,可以使用压力测试工具,如Apache的ab.exe。...

    京东首页静态布局

    文件名为“第一阶段作业题”的压缩包可能包含了实现京东首页静态布局的一些练习题目或者示例代码。这些题目可能要求你使用HTML和CSS来创建京东首页的特定部分,如导航栏、商品展示区域或者页脚。通过解决这些题目,...

Global site tag (gtag.js) - Google Analytics