`
com_xpp
  • 浏览: 365610 次
社区版块
存档分类
最新评论

java高并发-静态页面生成方案(1)

阅读更多

 提升网站性能的方式有很多,例如有效的使用缓存,生成静态页面等等。今天要说的就是生成静态页面的方式。这个也是我近期一直在搞的一个问题,近期在做使用html + servlet做个人网站,为什么是这2个东西呢?
 
      1、直接用servlet是为了保证网站能以最快的速度执行命令..个人总感觉像Struts hibernate spring之类的虽然方便但是效能带来的损耗不太能接收
      2、使用html同样是为了保证最快的反应速度,毕竟html 比jsp少了一层服务器执行.速度上要快的多
 
一、在这里要先说一下什么是页面静态化:
 
      简单的说,我们如果访问一个链接 http://abc.com/test.do,服务器对应的模块会处理这个请求,转到对应的jsp界面,最后生成我们想要看到的数据。这其中的缺点是显而易见的:因为每次请求服务器都会进行处理,如果有太多的高并发请求,那么就会加重应用服务器的压力,弄不好就把服务器 搞down 掉了。那么如何去避免呢?如果我们把对 test.do 请求后的结果保存成一个 html 文件,然后每次用户都去访问 http://abc.com/test.html ,这样应用服务器的压力不就减少了? 
 
      那么静态页面从哪里来呢?总不能让我们每个页面都手动处理吧?这里就牵涉到我们要讲解的内容了,静态页面生成方案... 我们需要的是自动的生成静态页面,当用户访问 http://abc.com/test.do,会自动生成 test.html ,然后显示给用户。
 
 
二、下面我们在简单介绍一下要想掌握页面静态化方案应该掌握的知识点
 
     1、 基础— URL Rewrite 
         什么是 URL Rewrite 呢 ? URL 重写。用一个简单的例子来说明问题:输入网址http://www.abc.com/test.do  ,但是实际上访问的却是 http://www.abc.com/test.action,那我们就可以说 URL 被重写了。这项技术应用广泛,有许多开源的工具可以实现这个功能。 
 
     2、 基础— Servlet web.xml 
         如果你还不知道 web.xml 中一个请求和一个 servlet 是如何匹配到一起的,那么请搜索一下 servlet 的文档。这可不是乱说呀,有很多人就认为 /xyz/*.do 这样的匹配方式能有效。 
         如果你还不知道怎么编写一个 servlet ,那么请搜索一下如何编写 servlet。这可不是说笑呀,在各种集成工具漫天飞舞的今天,很多人都不会去从零编写一个 servlet了。 
 
三、基本的方案介绍
     

 

        其中,对于 URL Rewriter的部分,可以使用收费或者开源的工具来实现,如果 url不是特别的复杂,可以考虑在 servlet 中实现,那么就是下面这个样子: 
      

本人原创文章@www.javady.com 转载请标明出处 http://www.javady.com/index.php/87.html
3
11
分享到:
评论
20 楼 w156445045 2012-06-09  
使用URL Rewrite 只是伪静态啊,访问过后,浏览器还是会显示出action的路径等~
19 楼 leonayx123 2012-06-07  
xieyongwei 写道
leonayx123 写道

你这里说的静态化,是伪静态化喽?只是把连接地址通过映射的方式转换成html等后缀,
这种做法只是能提高爬虫的抓取,并不能改善页面加载的效率啊。
每次页面都要连接数据库查询数据。

还是说你意思把页面 用esi 、squid 这样的缓存缓存起来?

我不理解你说的jsp也是静态化的意思。

  对不起,是我没有表达清楚,我指的jsp静态化是指这个jsp页面的代码本身是通过静态化实现。
  比如:你网站首页index.jsp,其中一条条文章标题,如果没有静态化,你必然在后台要和数据库打交道,此时如果访问量很大,后台负担也同时增大;但是你可以在必要的时机(如产生要在首页显示的文章时)通过静态化重新产生index.jsp,其中的文章条目是生成在这个文件本身代码中的,服务器压力自然减少,cms消息等还是按照原来的代码实现。如果页面内容很单调、后台交互数和量很小,动态和静态页面对服务器的压力区别不是很大。
  静态化可以用Java的io实现,也可以用freemark等框架,当然,你最好先读取一个模板文件来套用格式。


恩。我知道你的意思了。你没看懂我最早提的问题。
通过io和freemark静态化我知道怎么做。

我比较关心的是,新内容发出去后,什么时候重新静态化 也就是你说的

引用

“但是你可以在必要的时机(如产生要在首页显示的文章时)通过静态化重新产生index.jsp"


什么是必要时机?没新增一个消息 就要重新静态化?我说的是门户的首页,模块肯定不只一个cms portlet。而是多个。
那我很多人同时发的时候,就会不停的io,必宕无疑。

有听说过 可以局部缓存,局部刷新。即我那个模块的消息更新了,只刷新这一块。首页其他模块依旧不变。
我是在问 做首页静态化的哥们们,到底是弄了什么方式,还是直接不静态化。并不是说我首页直接用的html写的。

18 楼 xiegqooo 2012-06-06  

跟着大家学习一下

17 楼 xieyongwei 2012-06-06  
leonayx123 写道

你这里说的静态化,是伪静态化喽?只是把连接地址通过映射的方式转换成html等后缀,
这种做法只是能提高爬虫的抓取,并不能改善页面加载的效率啊。
每次页面都要连接数据库查询数据。

还是说你意思把页面 用esi 、squid 这样的缓存缓存起来?

我不理解你说的jsp也是静态化的意思。

  对不起,是我没有表达清楚,我指的jsp静态化是指这个jsp页面的代码本身是通过静态化实现。
  比如:你网站首页index.jsp,其中一条条文章标题,如果没有静态化,你必然在后台要和数据库打交道,此时如果访问量很大,后台负担也同时增大;但是你可以在必要的时机(如产生要在首页显示的文章时)通过静态化重新产生index.jsp,其中的文章条目是生成在这个文件本身代码中的,服务器压力自然减少,cms消息等还是按照原来的代码实现。如果页面内容很单调、后台交互数和量很小,动态和静态页面对服务器的压力区别不是很大。
  静态化可以用Java的io实现,也可以用freemark等框架,当然,你最好先读取一个模板文件来套用格式。
16 楼 杨胜寒 2012-06-06  
看来楼主的开发经验跟文章内容一样,不如题目那么有深度,
15 楼 leonayx123 2012-06-06  
xieyongwei 写道
leonayx123 写道
假如我门户首页,消息要实时性,先发的cms消息要立刻显示。
而你已经把页面生静态化了。

那么我新发消息后,什么时候再重新静态化呢?
写一个计划任务?
还是每发一个就重新生成?

页面静态化,不只是说一定是html等方式
jsp页面也可以说是静态化,静态的是本来要从service或者数据库取的数据,当然你要发送的消息部分还是可以用动态的技术!


你这里说的静态化,是伪静态化喽?只是把连接地址通过映射的方式转换成html等后缀,
这种做法只是能提高爬虫的抓取,并不能改善页面加载的效率啊。
每次页面都要连接数据库查询数据。

还是说你意思把页面 用esi 、squid 这样的缓存缓存起来?

我不理解你说的jsp也是静态化的意思。
14 楼 xieyongwei 2012-06-06  
leonayx123 写道
假如我门户首页,消息要实时性,先发的cms消息要立刻显示。
而你已经把页面生静态化了。

那么我新发消息后,什么时候再重新静态化呢?
写一个计划任务?
还是每发一个就重新生成?

页面静态化,不只是说一定是html等方式
jsp页面也可以说是静态化,静态的是本来要从service或者数据库取的数据,当然你要发送的消息部分还是可以用动态的技术!
13 楼 smelly_pretty 2012-06-06  
关键的部分没说呀,如何用struts和servlet生成静态页面的??
12 楼 leonayx123 2012-06-06  
假如我门户首页,消息要实时性,先发的cms消息要立刻显示。
而你已经把页面生静态化了。

那么我新发消息后,什么时候再重新静态化呢?
写一个计划任务?
还是每发一个就重新生成?
11 楼 bestxiaok 2012-06-06  
kgd1120 写道
楼主先学习下什么是高并发

没看出怎么处理高并发来
10 楼 cloudy6841 2012-06-06  
这个标题很令人兴奋,进来一开,啥都木有啊!伤心
9 楼 Java_大猫 2012-06-06  
这年头 都玩标题党?
8 楼 jy02405651 2012-06-06  
和高并发 扯不上关系···
7 楼 ayanami001 2012-06-06  
这是神马东西。。
6 楼 jingrenlang 2012-06-06  
URL Rewriter应该放在web 服务器里面,绕过tomcat,减少对tomcat的直接请求;在tomcat中进行url重写,并不能减少对tomcat的请求数,tomcat的压力依然存在。
5 楼 tang_kun_cool 2012-06-06  
表头档么?
4 楼 xieyongwei 2012-06-06  
浮生过半 写道
这跟高并发有啥关系 顶多增加访问速度而已

动态页面就存在并发问题,楼主观点是没问题的。
3 楼 kgd1120 2012-06-06  
楼主先学习下什么是高并发
2 楼 浮生过半 2012-06-06  
这跟高并发有啥关系 顶多增加访问速度而已
1 楼 qinglongyun 2012-06-06  

相关推荐

    Java高并发:静态页面生成方案--UrlRewrite

    优点 一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面. 二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己...

    java解决网站静态页面生成方案(源码)

    静态页面通常加载更快,对搜索引擎友好,且在高并发访问时能更好地处理负载。 生成静态页面的方法通常涉及将动态内容转换为HTML文件,这些文件可以在服务器上存储并直接发送给客户端,而无需执行服务器端的额外处理...

    静态页面生成方案

    然而,这种动态生成方式在高并发场景下会显著增加服务器压力,可能导致服务不稳定或崩溃。为了解决这一问题,通过预生成静态HTML文件(如`http://xyz.com/index.html`),可以极大地减轻服务器负担,因为静态文件的...

    动态页面静态化汇总--页面静态化方案

    然而,这种模式在高并发场景下可能会造成服务器性能瓶颈。 2. **Freemarker模板技术**: Freemarker是Java平台上的一个开源模板引擎,用于生成动态内容。它与JSP类似,但更专注于视图层,提供更简洁的模板语法,且...

    Java系统的高并发解决方法详解

    Java系统的高并发解决方法详解 ...Java系统的高并发解决方法可以通过静态化、图片服务器分离、数据库集群和库表散列、缓存等多种方法来实现,选择哪种方法需要根据实际情况进行选择和组合,以提高系统的性能和扩展性。

    java高并发解决方案

    【Java高并发解决方案】 在构建大型网站,尤其是门户网站时,面临的主要挑战之一是处理大量用户访问和高并发请求。为了应对这一挑战,通常会采取一系列技术措施,包括使用高性能服务器、数据库、编程语言以及Web...

    java JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip

    - 提升用户体验,尤其是对于高并发访问的场景,静态页面可以快速响应。 3. **实现JSP页面静态化的策略**: - **重写JspWriter**:JspWriter是JSP页面中负责输出内容的对象。通过自定义JspWriter,可以在页面渲染...

    有关Java页面静态化

    这种技术在高并发、大数据量的网站中尤其重要,因为它能显著降低数据库查询频率,提高系统响应速度。 Java页面静态化主要有两种方式:服务器端静态化和客户端静态化。 1. 服务器端静态化: - **预渲染...

    java 页面静态化

    Java页面静态化是一种提高网站性能的技术,它将动态生成的网页转换为静态HTML文件,以减少服务器处理和数据库查询的时间,提升用户体验。这种技术在高访问量、数据更新不频繁的网站中尤其适用。 首先,我们需要理解...

    Java 生成静态页

    这种技术可以显著减少服务器的负载,提高页面加载速度,尤其在高并发访问时效果更为明显。 在Java中实现动态页到静态页的转换,通常涉及以下几个核心概念和技术: 1. **模板引擎**:如FreeMarker、Thymeleaf或...

    JSP生成静态页面

    然而,每次用户访问时,服务器都需要执行这些代码,这可能导致性能下降,特别是在高并发的情况下。 **静态页面生成过程**: 1. **预处理**:当一个JSP页面首次被请求时,JSP容器(如Tomcat)会将其转换为一个...

    java高并发处理方法

    ### Java高并发处理方法 #### 一、HTML静态化 HTML静态化是一种高效的网页加载方式,它可以显著提高网站性能并减少服务器负担。对于那些需要频繁更新的网站而言,完全依赖手动实现静态化并不现实,因此引入了内容...

    java高并发项目的demo

    这个"java高并发项目的demo"提供了一个实例,展示了如何处理大量并发请求。以下将详细阐述涉及的关键技术及其作用。 首先,Redis作为一个高性能的键值存储系统,在高并发场景下常被用作缓存来减少数据库的压力。在...

    Java秒杀系统方案优化 高性能高并发实战

    ### Java秒杀系统方案优化与高性能高并发实战 在当今互联网时代,秒杀活动作为一种吸引用户的营销手段,被广泛应用于各类电商网站。然而,对于技术团队来说,如何设计和实现一个稳定、高效的秒杀系统,成为了巨大的...

    高并发网站架构设计方案

    【标题】: "高并发网站架构设计方案" 【描述】: "设计高并发网站架构的关键在于优化性能和确保系统的稳定性,以应对大规模用户访问的压力。本文将探讨几种关键的策略和技术,包括网页HTML静态化、图片服务器分离、...

    java系统高并发的解决方案.docx

    ### Java系统高并发解决方案 #### 一、引言 随着互联网技术的发展,现代网站面临着越来越多的挑战,尤其是大型网站在处理海量用户访问时所遇到的高并发问题。为了解决这些问题,本文将从多个维度探讨Java系统高...

    [工具查询]通用静态页面生成系统(Engineer)v.1_engineer1.zip

    【通用静态页面生成系统(Engineer) v.1】是一个基于Java JSP技术的应用程序,主要用于帮助学生进行毕业设计学习。这个系统的核心功能是将动态网页内容转化为静态HTML页面,以此提高网站的加载速度和搜索引擎优化...

    java处理高并发高负载类网站的优化方法.docx

    "Java处理高并发高负载类网站的优化方法" 本文将讨论Java处理高并发高负载类网站的优化方法,主要分为两个方面:数据库的设计方法和系统架构的优化。 一、数据库的设计方法 在高并发高负载类网站中,数据库的响应...

    JSP结合JavaBean生成静态页面示例

    1. **减少数据库访问**:静态页面一旦生成后无需再次查询数据库获取数据,显著降低了对数据库的依赖。 2. **提高页面加载速度**:静态页面由纯HTML构成,浏览器可以直接渲染,避免了动态页面中复杂的编译过程,使得...

    java2python--java代码转python工具

    在实际的转换过程中,工具可能会遇到挑战,比如处理Java的异常处理机制(try-catch-finally)到Python的异常处理(try-except-finally),或者将Java的多线程代码转换为Python的并发模型(如线程、进程或协程)。...

Global site tag (gtag.js) - Google Analytics