十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言
成都创新互联公司专注于企业成都营销网站建设、网站重做改版、库车网站定制设计、自适应品牌网站建设、html5、成都做商城网站、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为库车等各大城市提供网站开发制作服务。Tomcat 中的请求都是由 Servlet 处理,静态资源也不例外。在默认的 web.xml 中,配置了一个 DefaultServlet 用于处理静态资源,它支持缓存和断点续传。
DefaultServlet 的基本处理过程如下:
接下来主要分析资源缓存的设计和实现,以及 If 头域的处理。
1. 资源缓存的设计
访问磁盘的速度远远低于访问内存的速度,所以适当的缓存一部分静态资源能够让系统快速响应。
Tomcat 在 6.0.53 版本实现静态资源的处理时,借助了 JNDI 的一些 API(但在使用时感觉与 JNDI 的关系不大),相关类图及核心方法和属性如下:
缓存相关的类:
资源目录相关的类是:
默认情况下,缓存大为 10 MB,单个缓存资源大为 512 KB,缓存的 TTL 为 5s。
一般的,在 Mapper 映射到处理静态资源的 Wrapper 时,会引起资源的加载,基本的方法调用情况如下:
Mapper.map(MessageBytes, MessageBytes, MappingData) └─Mapper.internalMap(CharChunk, CharChunk, MappingData) └─Mapper.internalMapWrapper(Mapper$Context, CharChunk, MappingData) └─ProxyDirContext.lookup(String) └─ProxyDirContext.cacheLookup(String) └─ResourceCache.lookup(String) └─ResourceCache.find(CacheEntry[], String)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。