博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat NIO/APR对静态资源提速
阅读量:4214 次
发布时间:2019-05-26

本文共 1053 字,大约阅读时间需要 3 分钟。

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对静态资源提供缓存提高了性能

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);                }            }

 

转载地址:http://dmdmi.baihongyu.com/

你可能感兴趣的文章
LeetCode——DFS
查看>>
MapReduce Task数目划分
查看>>
ZooKeeper分布式锁
查看>>
3126 Prime Path
查看>>
app自动化测试---ADBInterface驱动安装失败问题:
查看>>
RobotFramework+Eclipse安装步骤
查看>>
测试的分类
查看>>
photoshop cc2019快捷键
查看>>
pycharm2019版本去掉下划线的方法
查看>>
九度OJ 1091:棋盘游戏 (DP、BFS、DFS、剪枝)
查看>>
leetcode 13: Roman to Integer
查看>>
a标签中调用js方法
查看>>
js函数中传入的event参数
查看>>
[hive]优化策略
查看>>
c++14现代内存管理
查看>>
右值引用,move语义和完美转发
查看>>
c++使用宏检测类是否包含某个函数或者变量属性
查看>>
CSS之Multi-columns的column-gap和column-rule
查看>>
CSS之Multi-columns的跨列
查看>>
CSS之浮动(一)
查看>>