- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
应用程序生成包含表格的 html 输出。生成的 html 文件非常大,大约 7 MB,因此即使在最新的浏览器上也需要很长时间才能呈现/滚动。此 html 内容将被手动策划(语言学相关项目)。
为了缩短页面加载时间,我想到了最初将内容分成多个页面,审阅者可以在其中单击链接转到下一页。但是,它会导致连续性出现不良中断 - 像无限滚动或延迟加载这些表格这样的事情会是一个更好的主意。
这些 html 页面将在本地查看(而不是从网络服务器获取)。从我读到的关于无限滚动/延迟加载的内容来看,它似乎在网络服务器中工作。我想避免这种情况。
基本上,我可以使用 javascript 在单个页面中延迟加载内容,但不使用 AJAX/php 吗?
此 html 输出将在 VM 内查看,因此减少页面加载时间很重要,现在大约为 2-3 分钟。
-- 编辑--
该应用程序将要翻译的英文文本文件作为输入,并通过分析每个句子生成 html 输出。每个句子一张表,可变列(单词),固定行(元素属性)。必须手动查看此数据,以检查应用程序是否正确分析了文本。
此应用程序作为 VM 镜像的一部分提供,因此页面加载/呈现时间很重要。我想避免将 Web 服务器 (xampp) 打包为 VM 的一部分。 AJAX 需要 Web 服务器来获取内容?
我该如何开始只显示这个静态的长网页的一部分,并在用户滚动时加载其余内容?
通过 lazyloadany [ http://jquery-plugins.net/jquery-lazyload-any 之类的东西延迟加载 div ] 到目前为止似乎是一个相关的答案。所以,我只是用标签包装了一些表格,然后使用这个 jquery 插件来显示所有这些 div?
最佳答案
这是我过去用来导航大型表结构的东西。对于一个 7Mb 的文件,它显然不会绕过下载时间,但 AJAX 也不会。然而,它所做的 - 至少对于现代浏览器 - 是跳过许多行的呈现(这对于表格呈现来说是需要花费大量时间的)。通过将行 display: none
作为默认值,浏览器应该忽略它们。
然后我使用一点点 js 创建一个分页界面,该界面一次只显示多行。该界面的用户友好程度完全取决于您;我已经使用了水平输入滚动条 .. 但它实际上可以是任何东西(只是不是原始页面的滚动条,如果在渲染之前不知道每一行的确切高度,这是相当棘手的,如果行几乎不可能有不同的高度)。
显然这是一个缩减表,如果你引入一个更大的表,你需要调整 slider 的步长值来适应,即行数越大,步长值应该越小。当使用大约 9000 行的表格测试此代码时,我需要大约 0.002 的步长才能适合小页面。
这是基本的 JavaScript,它是为与现代浏览器一起工作而设计的,如果您需要向后兼容任何过时的东西,我建议您更新代码以使用像 jQuery 这样的库——工作应该是最小的。
(function(){
/// store our references
var table = document.getElementById('target'),
wrapper = document.getElementById('target-wrapper'),
rows = table.getElementsByTagName('tr'),
scroller = document.getElementById('scroller'),
shown = [];
/// core function, updates which rows are visible at what scroller offset
var reveal = function(){
var i, tr,
s = scroller.step,
p = +scroller.value,
c = Math.floor(rows.length * s),
l = rows.length,
o = Math.floor(p * (l - c)) + 1;
while ( (tr = shown.pop()) ) { tr.style.display = 'none'; }
for ( i=0; i<c; i++ ) {
if ( (tr = rows[o+i]) ) {
shown.push(tr);
tr.style.display = 'table-row';
}
}
};
/// update when the scroller is changed
scroller.addEventListener('input', reveal);
scroller.focus();
/// transfer right and left arrow keys to the scroller (optional)
window.addEventListener('keypress', function(e){
if ( document.activeElement !== scroller ) {
switch ( e.keyCode ) {
case 37:
scroller.value = parseFloat(scroller.value) - parseFloat(scroller.step);
reveal();
break;
case 39:
scroller.value = parseFloat(scroller.value) + parseFloat(scroller.step);
reveal();
break;
}
}
});
/// set the ball rolling
reveal();
})();
这是预期的标记:
<table cellspacing="0" cellpadding="0" id="target">
<!-- your contents here //-->
</table>
<input id="scroller" type="range" min="0" max="1" step="0.1" value="0" />
...和预期的(通用的)CSS,您应该针对您的情况进行具体说明:
table { width: 800px; }
th { text-align: left; padding-bottom: 10px; }
tr { display: none; }
tr:first-child { display: table-row; }
#scroller { width: 800px; margin-top: 30px; }
考虑到会有人手动整理数据,您应该改进此 UI 以支持值过滤/搜索等,通过这种设计,这很容易做到。您只需要在选择行的地方介入并将您自己的过滤器/选择代码放在适当的位置,并在用户更改过滤器时更新 rows
变量。请记住,getElementsByTagName
将返回一个实时节点列表,这将比静态节点列表或元素数组更快。当/如果你实现过滤代码,你应该尝试并继续使用 live node lists如果可能的话。
Some further table optimisation tips: By specifying every cell width and height you should dramatically speed up a table's rendering speed. Also I remember reading that specifying a table's borders to collapse, using
border-collapse
can help with render speed, although I have not tried this myself.
关于javascript - 如何在本地最好地呈现大部分表格内容(~5 MB)的大型网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23578432/
我有一个本地存储库,有一个大文件被意外添加到其中。现在,即时通讯几乎落后了100次提交。当我尝试推送到GitHub时,它给了我一个错误。 我需要做任何我需要做的事情,以便能够推送此存储库的其余部分。
我正在尝试分配内存NSImage*originalLocationImage; NSURL *fileURL = [NSURL fileURLWithPath:originalLocation];//
我如何以及在何处可以编辑CDH4.7中的输入拆分大小,默认情况下为64 MB,但我想将其称为1MB,因为我的MR作业运行缓慢并且我想提高MR作业的速度。我想需要编辑cor-site属性IO.file.
我创建了一个 DLL,其中包含一个从 C# 代码调用的 JNI 函数。作为长时间运行的 GUI 应用程序的 C# 应用程序多次调用该函数。 我的 JNI 函数调用 JNI_GetCreatedJava
运行 TestDFSIO 后,我得到了以下指标: 2019-04-30 09:50:35,790 INFO fs.TestDFSIO: Date & time: Tue Apr
我正在测试连接到 Xcode 5.1.1 的运行 iOS 7.1 的 iPhone 4。我不明白为什么当仪器显示我的应用程序仅使用几兆字节并且有大量可用内存时我会收到内存警告甚至崩溃(见附件)。有什么
我有一个假设的值数据库,每个值的大小为 4 个字节(即 4,000,000,000)。所有值都存在于数据库中,因此它以 0 开头,以最大的 4 字节数字结尾。 只有一次,我想通过将 1 到 10000
我有一个字符串元组的 python 列表,格式如下:lst = [('xxx', 'yyy'), ...etc]。该列表包含大约 8154741 个元组。我使用了一个分析器,它说该列表占用大约 500
我需要每秒发送 1,00,000 批记录。我在实验后得到的是 azure event hub 的事件限制为 10,00,000 个字节。我的每条记录有 145 字节,我必须发送的总记录是 1,00,0
HDFS块大小默认为128 MB(来源:https://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/hdfs-defau
我需要每秒发送 1,00,000 批记录。我在实验后得到的是 azure event hub 的事件限制为 10,00,000 个字节。我的每条记录有 145 字节,我必须发送的总记录是 1,00,0
我正在 Linux 机器上运行 Jboss EAP 服务器 6.1。分配的堆内存如下。 JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Dja
我最近提出并解决了一个关于将大于 2 MB 的 .PDF 文件作为 BLOBS 上传到 MySQL 数据库的问题。我不得不更改我的 php.ini 文件中的一些设置和 MySQL 的最大数据包设置。然
我需要创建一个文本文件(字母数字),其大小(精确或接近)以 MB 为单位等于我输入的数字,例如 1 MB。我试图生成一个字符串,认为一个字符是 16 位或 2 字节,所以:1KB = 1024 字节
我已经阅读了很多有关通过设置 yarn.scheduler.maximum-allocation-mb 来解决此类问题的内容,我已将其设置为 2gb,因为我当前正在运行 select count(*)
这个问题在这里已经有了答案: this exceeds GitHub's file size limit [duplicate] (3 个回答) 1年前关闭。 核心程序崩溃数据。 我不知道核心文件是从
我已经建立了一个 Electron 应用程序,并使用 Electron 打包程序对其进行了打包。我制作了238MB的Windows bundle 包,而Linux版本是450 MB。我将其与也是 El
这个问题在这里已经有了答案: Generate an integer that is not among four billion given ones (38 个答案) 关闭 9 年前。 Give
我的 Meteor 应用程序获取一个 CSV 文件,使用 Baby Parse(Papa Parse for server)对其进行解析,并将数据插入到 MongoDB 集合中。 每个 CSV 行都作
Amazon SES 有 10 MB 的文件限制 我的问题是 有没有其他方法可以发送超过 10 MB 的文件? 最佳答案 这是一个硬限制。 您需要做的是包含您当前包含在电子邮件中的 Assets 的
我是一名优秀的程序员,十分优秀!