【问题标题】:How can I cache a csv for Papa Parse to parse?如何缓存 csv 供 Papa Parse 解析?
【发布时间】:2015-01-21 01:18:55
【问题描述】:
我非常不熟悉缓存的工作原理,所以我想知道如何在第一次从服务器上提取 csv 文件,但在随后的刷新中使用缓存的 csv 文件?
我知道如何从服务器获取文件,并通过 PapaParse 解析它。但是,我不知道如何缓存该 csv,甚至不知道如何通过 PapaParse 访问缓存。
更进一步,我如何检查这个 csv 文件多久以前更新过,如果需要更新,请再次将 csv 从服务器上拉下来?我知道 Javascript 中有一个 lastModified 属性,但不清楚它是否适用于缓存文件。
【问题讨论】:
标签:
javascript
php
browser-cache
papaparse
【解决方案1】:
您从中下载 CSV 文件的浏览器和服务器应该为您协商缓存;我可能会误解,但我不确定 Papa Parse 会与此有什么关系。
对于最后修改日期,如果文件恰好被页面上带有<input type="file"> 元素的用户选中,您可以访问文件对象并检查其lastModified 或lastModifiedDate 属性(至少,它们存在于 Chrome 上)。
要获取要下载的文件的最后修改日期,MDN has an example 已为您准备好:
function getHeaderTime () {
alert(this.getResponseHeader("Last-Modified")); /* A valid GMTString date or null */
}
var oReq = new XMLHttpRequest();
oReq.open("HEAD" /* use HEAD if you only need the headers! */, "yourpage.html", true);
oReq.onload = getHeaderTime;
oReq.send();
这只是做一个 HEAD 请求(只检查最后修改的而不是获取整个文件,你需要的只是标题)并读取 Last-Modified 标题。