忙了半个月了各种压力,边开发边测试边上线三边工程,同时处理发布问题和开发问题,人被分成好几掰用。今天总结一下遇到的问题及解决方法。
部署环境 nginx tomcat
1.www.xxx.com/app/ 去掉应用名称app ,我们在开发环境直接用www.xxx.com/app/的方式去访问,但是在生产环境需要去掉 app/
解决方法:打开tomcat conf 文件夹下的server.xml文件 ,在host节点下 加入 <Context path="" docBase="/app" debug="0" reloadable="true"/>
2.如果用nginx反向代理实现 tomcat负载均衡 将会导致tomcat的session不能共享。基于此问题我们关掉了一台tomcat,后期将用redis取代session。
3.Http 200 (from cache) 与 304 (not modified)的区别?
现象:我们在访问页面的时候发现数据总是不对,必须刷新之后才能正常显示,初步估计是缓存问题。但是每个页面都是同样的情况,已经不在是单纯的浏览器缓存问题。
后来查找原因发现。虽然每次http 响应都是200 ,但点进去之后发现 每个请求都读的缓存 from cache.
于是百度了一下 200 与304 的区别:https://www.bokeyy.com/post/200-ok-from-cache-vs-304-not-modified.html
200 OK (from cache) 是浏览器没跟服务器确认,直接使用了浏览器缓存;而304 Not Modified 是浏览器和服务器确认了一次缓存有效性,再用的缓存。
了解原理之后,发现可能是nginx配置有问题,
干掉expires之后就可以正常访问了。
4. 我们在测试的时候,发现一部分数据跑到测试库了。查找原因发现,内网的域名映射到了生产ip而公网的域名没有同步过来还是映射到测试ip。如果发现这种情况直接ping一下域名的ip地址。
这也是导致一些奇怪问题的原因。