问题描述
现在毫无头绪,希望能得到大家帮准,多谢:)
解决方案
你这静态化是说的url编程伪静态的, 还是真正意义上的静态化?真正意义上的静态化,也有多种方式, 比如你可以定期请求这个jsp,把响应的结果生成静态html文件保存。 定期更新它们。如果只是url看起来是静态的,比如 /a/b/c 或者 /a/b/c.html 这种, 很多web容器自带了urlrewrite模块。 比如resin, nginx等都可以, 在上面配置。 如果是java实现, 用一个叫做 urlrewrite的项目也可以。
解决方案二:
1楼的就是正确的, 请求 jsp之后, 服务器会把 资源jsp 放入到 response.getOutputStream() 中。得到这个流信息,然后 生成 html或者shtml等文件byte b[] = response.getBuffer();//原始流 原始数据把这些数据 写入到文件就行了啊。
解决方案三:
可以参考这个http://suntengjiao1.blog.163.com/blog/static/992110882012925111712224/
解决方案四:
你做静态化的目的是什么?关于完全静态化,这个和JSP关系就不是很大了(当然一楼说的方式也是一种方案),一般是通过某种模板引擎(FreeMarker, Thymeleaf)直接生成一大批html页面(全量生成或者根据内容变化增量加载),然后通过web服务器(nginx)等直接分发,关于部分无法静态化的内容(或者变化频繁的)使用Ajax技术异步加载。比如:一个在线购物应用,可以把商品详细信息页生成html(每个商品或者每个sku)然后动态加载库存和价格信息。每添加、修改或者删除一个商品对应的生成,重新生成或者删除相应的静态页面。你可以自己分析下现在主流电商的网站。静态化的好处不言而喻,因为全是html可以轻易通过CDN分发,而且本身web服务器也比tomcat执行jsp等快很多。当然复杂度也是很大的,一般的系统都不需要(或者不适合)完全静态化。如果仅仅是页面加载慢的问题,有很多其他的方式可以解决,比如:把数据库层加个缓存,减少不必要的数据库查询,SQL优化,页面部分使用Ajax异步加载等等。