render和nginx的问题

badouyuren 发布于 2014/11/06 17:37
阅读 204
收藏 0

@JFinal 你好,想跟你请教个问题:最近在有这么几个问题困扰着我。我在controller的某一个方法最后执行 render("index.html") ,我在 nginx 中配置了对包括.html等静态文件的处理,那么nginx对这个返回值是当作静态文件处理还是动态的内容处理?我的ViewType设置的是FREE_MARKER。另外,如果是renderHtml ,renderJson ,renderFile,又是什么呢?下面是nginx 的部分配置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires      30d;
}
  
location ~ .*\.(html|js|css)?$ {
expires      1h;
}  

location / {
proxy_connect_timeout   3;
proxy_send_timeout      30;
proxy_read_timeout      30;
proxy_pass http://tomcat_server_list;
}

加载中
1
a
alvinte

render里面的字符串只是文件名而已,默认ViewTypeFREE_MARKER,那就是说明这个是freemarker模板的文件名。renderHtml ,renderJson ,renderFile都是contentType不一样,都是在一个动态请求内的事情。

只要ngxin把动态请求放给servlet容器处理了,就和你配置的location ~ .*\.(gif|jpg|jpeg|png|bmp|swf) 就没关系了。除非你再JFinal里面做redirect,这样会告诉client再发一次请求,如果这次请求是静态的,即满足你nginx配置的url,那他会被nginx优先处理掉。

总之就是你在JFinal里面render不同的类型和你nginx配置完全没关系。你要清醒的知道一个http请求是如何流转的,才能搞清楚这些基本问题。

badouyuren
badouyuren
非常感谢你的解答
a
alvinte
回复 @八斗愚人 :是的。除非你在nginx里面对response也做了处理,一般没这种需求。
badouyuren
badouyuren
那就是说,nginx 处理的是客户端的请求,如果这个请求是静态的,它就去处理,如果是动态的,它就给tomcat去处理,至于tomcat处理后的返回结果无论是什么,是与nginx无关的。 对吧?
返回顶部
顶部