加载本地数组作为阿贾克斯的文件,以提高性能(Load local array as Ajax fil

2019-10-24 07:25发布

我使用的数据表创建一个表,但它加载非常缓慢。 我有大约 9000个记录需要从SQL服务器进行处理(PHP是不是一个选项)。 我使用XML和Spring MVC。 我使用的是XML和Java来收集数据,并把它变成一个HashSet(我曾经尝试列表还,既不显得比其他快)。

一旦我进入JS我使用一个for循环来填充我的数组,然后我使用的是“数据”的数据表。 我的理解是,使用服务器端和“AJAX”(替代数据)将加快速度显著,所以我想知道是否有办法把我的阵列,并将它们作为AJAX。

谢谢。

当前的代码:

var InternationalSet = [];
var storeIndex = 0;
<c:forEach items="${InternationalList}" var="entry">
InternationalSet[storeIndex]= ['', "${entry.getStoreId()}","${entry.getOrderPhone()}","${entry.getAddress1()}","${entry.getCity()}","${entry.getState()}", "${entry.getZip()}", "${entry.getMgrName()}", 
  "${entry.getFranchiseeName()}", "${entry.getOrglvl6Descr()}","${entry.getCommDescr()}", "${entry.getOrglvl8Name()}", "${entry.getLatitude()}", "${entry.getLongitude()}"];
 storeIndex++;
</c:forEach>
$('#dataTable').html( '<table cellpadding="0" cellspacing="0" border="0" style="width: 99%; color:black" class="display compact" id="tableOne"></table>' );
var table = $('#tableOne').DataTable( {
  "dom": '<l<t>ip>',
  "deferRender": true,
  "lengthChange": false, 
  "data": InternationalSet,
  "pageLength": 10,
  "orderMulti": false, 
  "columns": [.....

Answer 1:

这不是一个完整的答案,但很快的改善是填充您的列表作为一个单独的语句,而不是9000。

var InternationalSet = [
<c:forEach items="${InternationalList}" var="e" varStatus="status">
   [ '',
     "${e.getStoreId()}",
     "${e.getOrderPhone()}",
     "${e.getAddress1()}",
     "${e.getCity()}",
     "${e.getState()}", 
     "${e.getZip()}", 
     "${e.getMgrName()}", 
     "${e.getFranchiseeName()}",
     "${e.getOrglvl6Descr()}",
     "${e.getCommDescr()}", 
     "${e.getOrglvl8Name()}",
     "${e.getLatitude()}",
     "${e.getLongitude()}"
  ] <c:if test="${!status.last}">,</c:if>   
</c:forEach>
];

你可以删除一些从上面的新生产线,以紧凑化这一点。 到脚本的微小变化也将构建单个JSON对象,你可以在一个Ajax响应来填充表返回。

{
"data": [
<c:forEach items="${InternationalList}" var="e" varStatus="status">
....
</c:forEach>
]
}

如果您在返回从服务器部分的数据,你的反应会改变

{
"draw": ${param.draw},
"recordsTotal": ${yourTotal},
"recordsFiltered": ${yourFiltered},
"data": [
<c:forEach items="${InternationalList}" var="e" varStatus="status"
   begin="${param.start}" end="${param.start + param.length}" >
....
</c:forEach>
]
}

(您必须添加的一些范围/值检查param值)



文章来源: Load local array as Ajax file to improve performance