添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
重感情的西装  ·  张建华·  5 月前    · 
聪明伶俐的人字拖  ·  aistudio语音转文字·  7 月前    · 

问题:页面展示调用查询方法查询全部数据的时候一直显示loading。。。,打开调试器显示 Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR,而少部分查询则正常显示。

因为数据中有图片转成的二进制数组,数据比较长,由此怀疑是返回数据大小的问题,经过排查发现查询全部时返回的json数据不全,被截断了,因此页面无法解析。(这个问题真的很坑,排查了很久才发现是nginx的问题)

经过查询资料,发现是nginx代理的问题。

原因 nginx对于小的反向代理请求是使用内存作中转,对于稍微大一点的,是使用临时文件系统来做中转的,临时文件目录/usr/local/nginx/proxy_temp,而对这个目录没有读写权限,导致数据不全。

解决:然后让运维看了下nginx的日志和目录权限,发现确实如此,给临时文件目录加上读写权限,搞定。

附上nginx机制解释:(引用自: https://blog.csdn.net/j6915819/article/details/80603846

Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
比如如下配置:
fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8 4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2 4K 共 2 个 buffers。
当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。

注意:首先要检查确认前端页面html js等代码没有写错,一般页面数据加载不全,是数据格式错误或者加载到的页面代码错误。

问题:页面展示调用查询方法查询全部数据的时候一直显示loading。。。,打开调试器显示Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR,而少部分查询则正常显示。因为数据中有图片转成的二进制数组,数据比较长,由此怀疑是返回数据大小的问题,经过排查发现查询全部时返回的json数据不全,被截断了,因此页面无法解析。(这个问题真的很坑,排查...
ajax 返回 JSON 数据 ,Size 数据 量大,传输时间长的解决方案 有一个接口需要一次性返回 数据 , json 数据 的Size最大的时候,有将近1M的 数据 量,返回时间将近20s,是可忍,孰不可忍? 这个问题,是必须要解决的,估计除了我们自己,没人愿意等上20s了 减少SIze主要是两个方面:resources(资源) 和 transferred(传输); 首先,当然是压缩,分为2个方面 可压缩的字段内容,全部压缩 减少不必要的字段 然而,resources(资源) 和 transferr
解析 HTTP 响应的-超大 JSON 内容 一、需求背景 最近在做系统对接时遇到个比较特殊的情况,简要任务就是通过第三方提供的接口去查询对应的图片 数据 ;(在一般情况下可能说 是返回他们的一个图片地址,然后再由我们系统进行下载流进行上传;要么是返回图片的Base64字符),也许Base64的对接方式更常见。 当然,接到这个需求的接口也是通过Base64的方式传送 数据 。那。。。这不是一般的情况吗,应该没什么问题吧,接收返回的 json ,然后解析Base64字符串,最后转为图片,不就完事了吗? 嗯。。。。你是对的,当时我
现在一般都是返回 json 格式 数据 ,当后台返回 数据 量过大, json 数据 就达到100m以上,这样 页面 接收很容易就崩溃了,这个情况下可以使用tomcat的压缩机制,如下 在tomcat的server.xml中的Connector节点中添加属性如下: <Connector connectionTimeout="20000" port="8080" protocol=" HTTP /1.1...
Post提交的 json 数据 较大时,后台接收到的 json 为null问题描述问题解决其他 将项目部署到服务器上之后,当post发送的 数据 量较大时,后台接收到的 数据 为null(这里是 json 数据 ),通过服务器上项目运行日志可验证。 在tomcat的如下位置添加配置maxPostSize="-1", 如果是springboot项目在本地测试时,使用的是内嵌的Tomcat,则只需要在application.properties中添加:server.tomcat.max- http -post
计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。计算机网络之间以何种规则进行通信,就是网络模型研究问题? 网络模型一般是指 OSI(Open System Interconnection开放系统互连)参考模型 TCP/IP参考模型 网络参考模型 一条7M的 json 上传给我们,毫无意外的报错了:实体 数据 太大 。该如何修改以便适应大 数据 量的上传呢?在代码层面想不到解决方案,于是查看配置,百度之。 修改web.config配置两个节点: <system.web>节点下< http Runtime...
Java 中,查询 MS SQL 数据 并返回前端的 JSON 格式 ,常用的做法是使用 JDBC( Java Database Connectivity, Java 数据 库连接)驱动来连接 数据 库,执行 SQL 查询语句,然后使用第三方库,例如 Jackson 或 Gson,将查询结果转换成 JSON 格式 。 以下是示例代码: import java .sql.Connection; import java .sql.DriverManager; import java .sql.ResultSet; import java .sql.SQLException; import java .sql.Statement; import com.google.gson.Gson; public class MSSQLTo JSON { public static void main(String[] args) { String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=database;user=user;password=password;"; try (Connection con = DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();) { String SQL = "SELECT * FROM table"; ResultSet rs = stmt.executeQuery(SQL); Gson gson = new Gson(); System.out.println(gson.to Json (rs)); // Handle any errors that may have occurred. catch (SQLException e) { e.printStackTrace(); 在上面的代码中,首先连接到 MS SQL 数据 库,然后执行查询语句,并使用 Gson 将查询结果转换为 JSON 格式 。 注意:需要下载并导入 MS SQL JDBC 驱动,以及 Gson 库。