k668 发表于 2017-1-25 10:43:24

Tomcat NIO/APR对静态资源提速|tomact图片缓存|tomcat静态资源缓存|tomcat内部缓存

  tomact图片缓存| |tomcat静态资源缓存tomcat内部缓存  
  http://xiaoz5919.iteye.com/blog/1255273
1.Tomcat如何处理静态资源?处理静态资源很简单,只需根据URI定位到文件,然后读取文件,写到response的outputstream中去,但tomcat是如何处理,是不是通过servlet container统一处理,还有另有其他方式?最终我发现是由DefaultServlet来处理。
2.APR/NIO Connecter不仅能提高吞吐量,而且使用sendFile使用内核IO,而不是java通过封装以后的IO提高对静态文件的处理。
3.是不是所有的文件都交给sendFile来处理呢?不是,在DefaultServlet中有一个sendFileSize,默认为48k,也就是说只有48k以上的文件才能通过sendFile方式来处理。
4.如有修改DefaultServlt的默认参数,只在web.xml中重新配置DefaultServlet,并修改initParameter。
5.Tomcat代码研究:Tomcat对静态资源提供缓存提高了性能
Java代码  


[*]if (serveContent) {  
[*]               try {  
[*]                   response.setBufferSize(output);  
[*]               } catch (IllegalStateException e) {  
[*]                   // Silent catch  
[*]               }  
[*]               if (ostream != null) {  
[*]                   //是否满足使用sendFile的条件,如满足则使用  
[*]                   if (!checkSendfile(request, response, cacheEntry, contentLength, null))  
[*]                      //不满足,则copy文件到response中的outputStream中  
[*]              //  
[*]                       copy(cacheEntry, renderResult, ostream);  
[*]               } else {  
[*]                   copy(cacheEntry, renderResult, writer);  
[*]               }  
[*]           }  

 
页: [1]
查看完整版本: Tomcat NIO/APR对静态资源提速|tomact图片缓存|tomcat静态资源缓存|tomcat内部缓存