0 0

网站性能优化中如何实现页面静态化, nginx+tomcat5

请教各位大牛一个问题: 现在的项目从客户端到webAPP 经过nginx+tomcat,经过压力测试,事务响应时间很长, 所以想着在nginx/tomcat加上静态页面的缓存, 但是大多文章说的主要是nginx上面使用proxy_cache. 请注意 我这里说的缓存不是针对静态文件(js,css,html,image等), 而是针对整张页面或者局部页面的缓存, 这就有一个问题, nginx不是serlvet容器对于jsp是不能解析的.

我现在的想法是:
    1.项目代码上对出口的jsp进行过滤filter, 将jsp转化成html格式, 然后更新到nginx服务器的指定目录下
    2.nginx上配置,对于所有请求先去之前指定的静态页面主目录去找有没有页面, 没有的话再去upstream去请求后端的webapp处理, 同样处理完之后经过filter转化成html在更新存放静态页面的目录.


请教各位大牛, 不知道我的想法是否正确, 还有什么正确的主流的的思路和建议,请不吝赐教.
2013年6月14日 09:56

7个答案 按时间排序 按投票排序

1 0

采纳的答案

像你这个问题需要拆开分析。nginx做静态文件访问是很强,但是首先你要考虑生成静态文件后的代价:1.什么时候生成;2.什么时候更新;3.信息不及时会不会导致不良后果;4.因为你是生成物理html文件的,如果你们项目数据量很多、页面很多,最终生成的文件是否会很多、很大,这么多文件维护起来有没有难度。


痛点:曾经做过访问结构统计,写xml。平常访问是没有问题,但在高并发下,你想死的心都有。打开文件不对,一看是前面还没写完,另外一个用户就访问了,又写,导致文件格式不对。


建议:对项目进行拆分,检查数据库访问时间、程序处理时间、页面展示时间。看下响应时间长是因为哪里出的问题。
      如果实在要缓存,建议数据库开启缓存,程序将数据缓存至内存中,前端服务器设置缓存,莫要去让程序判断是否写页面。
      如果最终还是要写html。你的第二点就不可用,因为是程序主动生成html,例如:新闻类更新时,由编辑人员点击发布,此时可能就写了一个静态的html,而不是由用户去访问出发写html,避免高并发会出现的问题。

文笔不好,第一次在iteye回答问题,如有疑问可私信,或者发我邮箱。

2013年6月14日 16:30
0 0

如果你内存够大就不用转成HTML了,直接URL缓存,其实HTML加载也是耗时的,只是相对于动态页面来说强一些

2013年6月15日 12:32
0 0

可尝试下Varnish

2013年6月14日 21:37
0 0

只是关注而已

2013年6月14日 20:48
0 0

可以用ehcache 可以在tomcat端缓存界面或者局部缓存 想过非常棒
http://www.cnblogs.com/daxin/archive/2013/05/31/3111597.html
可以自定义失效时间 非常灵活

2013年6月14日 17:27
0 0

这个要分情况来看的吧.

最简单的情况就是页面一旦生成就不会再被改变了,那这只需要在第一次访问的时候或者由后台线程去生成一次即可.

如果是有改变的那就复杂一些了.

1.有改变,但是不需要很实时的去展现这些改变.那你可以为这些已经生成的静态化页面由专门的线程去定时重新生成一下.

2.有改变,需要马上看到结果.这里的话,我建议你不如直接利用缓存将数据进行缓存免去后台数据库的访问时间.这样你将获得的数据缓存在内存中,基本上就只剩下组装页面和响应的时间了,会大大加快请求处理速度的.

2013年6月14日 15:56
0 0

你这个想法很好,顺便说一下,既然用到了nginx,nginx就能获取到html,不用filter了。nginx有一个模块srcache,把html缓存到memcache中。

2013年6月14日 11:00

相关推荐

    linux下nginx+tomcat负载均衡配置

    文档非常详细介绍了linux下nginx+tomcat负载均衡配置 包括nginx安装 nginx配置 tomcat配置 验证配置与测试负载均衡 nginx与tomcat动静态请求分离配置 nginx缓存配置。

    nginx + tomcat 集群

    nginx tomcat niginx 作为静态文件处理的web服务器,tomcat作为Java的动态处理

    使用docker部署nginx+tomcat架构.pdf

    实现动态/静态(资源请求)分离和负载均衡打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    nginx+Tomcat Web负载均衡服务一键安装

    注意:安装前需要优先安装并配置JDK环境 1.安装路径建议安装在磁盘根目录 2.安装完成后,Tomcat已经配置服务端口和集群Sesstion共享, 环境变量无需配置,安装后立即生效, ...则需要重新配置nginx的静态服务目录

    使用nginx+tomcat实现静态和动态页面的分离

    博主最近在优化一个javaweb项目,该项目之前一直都是使用tomcat处理用户请求的,无论静态还是动态的东西,一律交给tomcat处理。tomcat主要是负责处理servlet的,静态的文件还是交给nginx处理,nginx对静态文件的处理...

    nginx和tomcat访问图片和静态页面的配置方法

    主要介绍了nginx和tomcat访问图片和静态页面的配置方法,需要的朋友可以参考下

    详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建

    最初YUM安装了Nginx,但是不知道什么原因,Nginx的服务可以正常启动,静态页面也可以正常访问,但是就是无法正常的搭建虚拟主机和负载均衡。对引没有深究原因,决定把他卸载,然后手动安装。 手动安装好Nginx后,...

    简单实现nginx+tomcat的反向代理与动静分离

    windows下测试 nginx+tomcat实现java web项目的动静分离 1. 安装nginx,访问静态资源 安装成功后,启动nginx,浏览器输入http://localhost/出现欢迎页面. 在nginx下依次建立目录 static\test1\js\common,并将...

    Nginx + Tomcat实现请求动态数据和请求静态资源的分离详解

    主要给大家介绍了关于Nginx + Tomcat实现请求动态数据和请求静态资源的分离的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    "优雅的SSM框架"进行完善(页面分离+nginx负载均衡+tomcat集群)

    Maven Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) ...Nginx静态加载、负载均衡 基于keepalived的nginx高可用方案 Tomcat集群(Redis共享Session) Sping Shiro权限控制(待完善)

    web服务器nginx+部署前端vue项目

    1. 什么是 nginx 和可以做什么事情 ...Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。 https://lnmp.org/nginx.html

    Nginx与Tomcat实现动静态分离和负载均衡

    本文介绍了Nginx与Tomcat实现动静态分离和负载均衡,所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片、html等静态的文件,tomcat(或weblogic)处理jsp、do等动态文件,从而达到动静页面访问时通过...

    one in stack full beta

    lnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx处理静态,Tomcat(JDK)处理JAVA lnmh(Linux + Nginx+ MySQL+ HHVM) http://mirrors.linuxeye.com/oneinstack-full-beta.tar.gz. #完整版下载 包含COS备份 ...

    基于ssm实现的电子商城系统+源代码+文档说明

    freemarker页面静态化,提高访问速度 sso单点登陆系统,避免tomcat集群seesion共享带来的集群数量限制问题 基于redis的购物车系统 <项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传...

    nginx-tomcat.zip

    nginx12.2,资源包中 nginx-1.12.2/html目录下有测试使用到的html静态资源,端口8091; tomcat8.5.69,自定义域名www.vitamin.com端口8090;

    tomcat+nginx域名配置方法

    大多数时候我们一台服务器会放置多个tomcat,这时如何通过域名的方式(不加端口号)访问tomcat下的某个项目,通常情况下是修改tomcat端口为80,但对多tomcat有很多呕病,比如你要解决80端口被占用的情况,本文就不...

Global site tag (gtag.js) - Google Analytics