wasdtmac 2013-06-14 09:56
浏览 279
已采纳

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

请教各位大牛一个问题: 现在的项目从客户端到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在更新存放静态页面的目录.

请教各位大牛, 不知道我的想法是否正确, 还有什么正确的主流的的思路和建议,请不吝赐教.

  • 写回答

7条回答 默认 最新

  • zuzjx 2013-06-14 16:30
    关注

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)