【发布时间】:2014-01-16 01:15:19
【问题描述】:
相关问题是here(但没有答案)。我想返回通过 XMLHttpRequest 加载的 HTML 的大小。我缓存文件 30 分钟。所以我确实将文件保存在一个临时文件夹中,例如 temporary_folder/filename.html。我可以使用filesize(filename-here) 来获取这个文件的大小。但事实是这只是返回其中的 HTML 代码的大小。此 HTML 文件还包含使用 <img> 标记的图像。我怎样才能得到这些的全部尺寸?简而言之,我想要 filename.html 的大小 + (里面的图片)的大小。
function updateProgress (event)
{
var percentComplete = ((event.loaded/event.total)*100);
$('#progress-bar').val(percentComplete);
$('#progressbar-value').text(percentComplete);
}
这就是我更新进度条并显示加载百分比的方式。但这会根据 HTML 文件的大小而不是其中包含的图像大小进行更新。说 5 KB(文件名.html)。此 filename.html 包含一些大小为 3 或 4 MB 的大图像,因此进度条结束的速度比实际加载时间快。
有解决这个问题的想法吗?
编辑:
在构建 HTML 文件时阅读此处的一个答案后,我跟踪了图像的大小并将总大小添加到文件名中。但随之而来的是一个新的问题。在 PHP 端,我将 Content-Length 设置为总大小。但是现在在客户端,首先加载 HTML,然后渲染图像。所以进度条再次填充不匹配。我还在控制台中看到以下错误
Uncaught NotSupportedError: The implementation did not support the requested type of object or operation. (anonymous function)
w.extend.each
w.fn.w.each
w.fn.extend.val
updateProgress
【问题讨论】:
-
您也许可以使用
AJAX progress做一些事情(仅限HTML 5 iirc)。我假设这个例子中的evt.total是字节...... -
你能提供更多细节吗?在客户端浏览器或服务器上缓存?如果是前者,你如何拯救他们?您试图实现普通缓存机制无法做到的事情?你打算怎么处理这个尺寸?
-
另外 - 你是缓存图片还是只缓存 html?
-
@AlexK。我的页面左侧会有一些过滤器选项。当用户选择/取消选择一些时,表单将通过
XMLHttpRequest的POST方法提交。数据库查询后,输出将保存为临时文件夹中的 HTML 文件。读取 HTML 文件,计算文件大小,设置内容长度标头,回显输出。如果再次使用相同的参数提交表单,则临时文件夹中的文件将在没有数据库查询的情况下被回显。 -
@LindsayMorsillo:当然,图片会被缓存。
标签: javascript php html xmlhttprequest