启动报错-Finished invalidation session. No sessions were stopped.

项目启动失败,报错'Finished invalidation session. No sessions were stopped.',问题指向Shiro验证和JDK版本。项目本地使用Oracle-JDK8,服务器上为OpenJDK8,导致部署功能差异。解决方式是切换到包含Oracle-JDK8的基础镜像。此外,还提及了Hive与Kerberos认证的各种报错及其解决方案。

启动报错-Finished invalidation session. No sessions were stopped.

报错描述:

项目部署到服务器后,开始启动了,但最终没有启动成功。项目使用了Shiro验证,在启动项目后,会自动去找缓存信息,根据Session登陆验证。

这里报错说没有Sessions,但这个信息前面就是初始化Sessions的日志,通过查看网上文章,以及自己测试后的解决方式如下:

①可能与Shiro Session有关,但具有代码又没有错的地方,这里需要自己先检查代码

②与jdk版本有关

在拉取的Tomcat基础镜像中,大多数都是使用的OpenJDK,是开源的jdk,以GPL协议的形式发布;而Oracle-JDK是官方的,在OpenJDK的基础上进一步完善的,使用JRL(Java Research License,Java研究授权协议)发布。

二者主要区别:

  • 授权协议不同
  • OpenJDK源码不完整:只包含最精简的JDK,不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

本地项目使用的JDK是Oracle-JDK8,而拉取的镜像使用的OpenJDK8,就导致它们在部署功能上有差异,解决方式是重新拉取包含Oracle-JDK8的基础镜像。


啥,你以为就这样就完了吗?我遇到的可是一大堆报错哦!

哦,不是啊!啥?你也遇到很多报错啊!来看看下面这个报错及解决汇总文章:

Hive连接+Kerberos认证各种报错及解决办法汇总

<think>嗯,用户这次的问题是关于优化前端项目中大量JS和CSS资源加载,特别是处理大文件,比如20M的情况,还提到了特定路径下的多个yun-pal相关文件。我需要仔细回顾之前的对话,看看之前给出的建议是否适用,或者需要调整。 首先,用户之前的问题是关于优化JS加载资源较多的情况,我给出了异步加载、代码拆分、预加载、压缩缓存、性能监控等方法。现在用户进一步具体化问题,涉及到大文件和特定路径的资源,可能需要更针对性的策略。 用户提到的是/yun-pal/cdn/js路径下的多个大文件,20M的JS和CSS。这种情况下,常规的优化手段可能不够,因为文件体积太大,即使使用异步加载或代码拆分,首次加载时间可能还是太长。我需要考虑如何减少传输体积,优化加载策略,以及可能的服务器端优化。 首先想到的是文件分割和懒加载。动态import()可以将大文件拆分成按需加载的模块,但用户可能已经这样做了,或者需要更细致的拆分。如果文件本身无法拆分,比如第三方库或特定模块,可能需要其他方法。 然后是压缩和传输优化。除了常规的Gzip/Brotli,20M的文件可能需要更高压缩率的算法,或者考虑分块传输。比如HTTP/2的流式传输,或者使用CDN的分块缓存。另外,检查是否有不必要的代码,比如未使用的CSS或JS,通过Tree Shaking和PurgeCSS来减少体积。 资源预加载和缓存策略也很重要。对于大文件,利用预加载提示浏览器提前获取,同时设置长期缓存,减少重复下载。CDN的配置是否合理,比如是否正确设置缓存头,是否使用了边缘缓存。 另外,大文件加载可能需要考虑渐进式加载或流式处理。比如将JS分成多个块,按需加载,或者使用Service Worker在后台缓存资源,实现离线可用。对于CSS,可以拆分关键CSS和内联,延迟加载非关键样式。 服务器端优化方面,HTTP/2或HTTP/3的多路复用可以提升并发加载效率,减少延迟。CDN的地理分布是否靠近用户,是否支持压缩和分块传输。还有,检查是否有重复的资源请求,合并文件或使用模块联邦等技术共享依赖。 可能还需要考虑代码本身的优化,比如减少不必要的依赖,使用更轻量的库,或者将部分逻辑移到后端。对于无法避免的大文件,使用Web Workers在后台线程运行,避免阻塞主线程。 最后,性能监控和分析工具的使用,比如Lighthouse或WebPageTest,来识别具体瓶颈。针对特定路径下的文件,可以分析其加载时序,看是否有并行加载的可能,或者调整加载优先级。 用户可能需要具体的配置示例,比如Webpack的代码分割,CDN的缓存设置,或者Service Worker的缓存策略。同时,要确保建议的方法适用于他们的技术栈,比如是否使用React、Vue等框架,是否有构建工具支持。 总结下来,针对大文件和大量资源的优化需要综合运用代码拆分、压缩、缓存、CDN优化、传输协议升级和渐进加载策略,同时结合性能分析工具持续监控和调整。</think>### 针对大量JS/CSS资源及大文件(如20M)的前端优化方案 --- #### 一、**大文件专项优化策略** 1. **分块传输与渐进加载** - 使用HTTP/2/3的**分块传输编码(Chunked Transfer Encoding)** 在CDN(如/yun-pal/cdn/js路径)配置分块传输,浏览器可逐步渲染已接收内容: ```nginx # Nginx配置示例 chunked_transfer_encoding on; ``` - **流式JS加载** 对大文件(如20M的yun-pal-core.js)按功能模块拆分,实现分段加载: ```javascript // 通过Range请求实现分块加载 fetch('/yun-pal/cdn/js/yun-pal-core.js', { headers: { 'Range': 'bytes=0-100000' } }).then(response => response.text()); ``` 2. **二进制压缩优化** - 启用**Brotli压缩(优先级高于Gzip)** ```nginx # Nginx配置 brotli on; brotli_comp_level 11; # 最高压缩级别 brotli_types text/css application/javascript; ``` - **预压缩静态资源** 在构建阶段生成.br文件(节省服务器CPU资源): ```bash # 使用brotli-cli预压缩 brotli -k -q 11 yun-pal-core.js ``` --- #### 二、**CDN路径(/yun-pal/cdn/js)深度优化** 1. **智能缓存策略** - 设置**永久缓存指纹** 通过文件哈希命名实现缓存失效控制: ```html <!-- 示例资源路径 --> <script src="/yun-pal/cdn/js/yun-pal-core.a1b2c3d4.js"></script> ``` - **CDN边缘计算缓存预热** 提前将大文件推送到CDN边缘节点: ```bash # 使用AWS CLI预热示例 aws cloudfront create-invalidation --distribution-id YOUR_DIST_ID --paths "/yun-pal/cdn/js/*" ``` 2. **并行加载优化** - **域名分片(Domain Sharding)** 拆分资源到多个CDN子域名(需权衡HTTP/2影响): ```html <script src="https://cdn1.example.com/yun-pal/core.js"></script> <script src="https://cdn2.example.com/yun-pal/ui.js"></script> ``` - **HTTP/2 Server Push** 主动推送关键资源(需CDN支持): ```http Link: </yun-pal/cdn/js/core.js>; rel=preload; as=script ``` --- #### 三、**代码级深度优化** 1. **模块联邦(Module Federation)** 通过Webpack 5联邦模块共享公共依赖: ```javascript // 主应用配置 new ModuleFederationPlugin({ name: 'host', remotes: { yunPal: 'yunPal@https://cdn.example/yun-pal/remoteEntry.js' } }); ``` 2. **CSS原子化与按需加载** - 使用**UnoCSS**或**Tailwind JIT** 按需生成CSS规则,典型场景可减少90% CSS体积: ```javascript // vite.config.js import Unocss from 'unocss/vite' export default { plugins: [Unocss()] } ``` - **动态样式注入** 延迟加载非首屏CSS: ```javascript window.addEventListener('load', () => { const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = '/yun-pal/cdn/css/non-critical.css'; document.head.appendChild(link); }); ``` --- #### 四、**高级加载技术** 1. **Service Worker智能缓存** 实现大文件离线可用与增量更新: ```javascript // sw.js self.addEventListener('install', (e) => { e.waitUntil( caches.open('yun-pal-v1').then(cache => cache.addAll([ '/yun-pal/cdn/js/core.js', '/yun-pal/cdn/css/main.css' ]) ) ); }); ``` 2. **Web Assembly优化计算密集型任务** 将CPU密集型逻辑转换为WASM模块(适用于20M+的算法类JS文件): ```javascript // 加载WebAssembly模块 WebAssembly.instantiateStreaming(fetch('/yun-pal/cdn/wasm/encrypt.wasm')) .then(obj => obj.instance.exports.encrypt(data)); ``` --- #### 五、**监控与调试方案** 1. **资源加载瀑布流分析** 使用Chrome DevTools的Network面板: - 过滤`/yun-pal/cdn/`路径 - 检查TTFB、内容下载时间、队列阻塞情况 2. **LCP优化专项** 针对最大内容绘制指标: ```javascript // 预加载LCP相关资源 const preload = document.createElement('link'); preload.rel = 'preload'; preload.href = '/yun-pal/cdn/js/lcp-component.js'; preload.as = 'script'; document.head.appendChild(preload); ``` --- ### 相关问题 1. 如何验证CDN分片策略对HTTP/2的影响? 2. Web Assembly在资源加载优化中的具体应用场景有哪些? 3. 如何实现CSS原子化框架的按需打包? 4. 模块联邦在微前端架构中如何优化资源加载?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值