Javascript 使用本地数据的HTML页面不立即显示对本地数据的更改

Javascript 使用本地数据的HTML页面不立即显示对本地数据的更改,javascript,html,csv,Javascript,Html,Csv,我对网络开发相当陌生。我正在使用HTML和Javascript,特别是JetcelJavaScript库,创建一个电子表格网页。电子表格来源于存储在我的项目工作目录中的CSV文件。问题是,当我对该CSV文件进行更改时,它们不会显示在我的项目中,直到我重命名该文件(并分别更改代码中的文件路径)。我怀疑这与网页缓存源CSV文件有关,但我不确定。我将如何禁用每次从CSV文件缓存/生成表源?我也在使用TomcatWeb服务器。多谢各位 获取我的电子表格的代码如下: <script>

我对网络开发相当陌生。我正在使用HTML和Javascript,特别是JetcelJavaScript库,创建一个电子表格网页。电子表格来源于存储在我的项目工作目录中的CSV文件。问题是,当我对该CSV文件进行更改时,它们不会显示在我的项目中,直到我重命名该文件(并分别更改代码中的文件路径)。我怀疑这与网页缓存源CSV文件有关,但我不确定。我将如何禁用每次从CSV文件缓存/生成表源?我也在使用TomcatWeb服务器。多谢各位

获取我的电子表格的代码如下:

<script>
    $('#spreadsheet').jexcel({
        allowInsertRow: false,
        allowInsertColumn: false,
        allowDeleteRow: false,
        allowDeleteColumn: false,
        csv : 'data/test.csv',
        csvHeaders : true,
        defaultColWidth : '200px',
    });
</script>

$(“#电子表格”).jexcel({
allowInsertRow:错,
allowInsertColumn:false,
allowDeleteRow:错误,
allowDeleteColumn:false,
csv:'data/test.csv',
csvHeaders:没错,
defaultColWidth:'200px',
});
当对test.csv进行更改时,我希望在下次刷新页面时显示这些更改,但目前没有发生这种情况


更新:重新启动Web服务器确实会显示更改,因此我认为这是一个缓存问题。我在代码的服务器端使用Java Servelet。

浏览器端资源缓存是一个常见问题。
为了防止这种情况发生,最简单的方法是在资源url中附加一个版本哈希,以便在修改时强制重新加载,这样在文件未更改时仍然可以使用缓存功能

如果没有关于您在服务器端使用的语言的信息,就很难为您提供更多帮助。
以下是我通常用于生成资源url的函数:

function assetv($path) {
    $hash = 'undefined';

    if (file_exists($path)) {
        $hash = filemtime($path);

        if (!$hash) {
            $hash = md5_file($path);
        }
    }

    return urlFromPath($path) . "?v=" . $hash; 
}
当然,“urlFromPath”取决于您的应用程序;-)

[编辑]

浏览器使用“用作缓存键”(大约)的url(data/test.csv)加载csv文件

因此,要在修改文件时强制重新加载,您需要更改url,例如使用版本号参数(文件名不变):
数据/test.csv?v=1
data/test.csv?v=2

由于服务器端只知道文件状态,所以在构建HTML时需要在服务器端生成版本连接的url


最后,您可以使用文件的“自然”属性,而不是手动管理版本号,因为它是最后一次修改时间,或者是文件内容的散列。

谢谢大家的建议。最终我发现问题是因为我从中获取数据的csv文件位于项目文件夹中,而Tomcat不会立即更新对该文件的更改。我通过读取存储在机器工作目录之外的文件中的数据来解决这个问题

我遇到了类似的问题。除了清除缓存和刷新,或者一起重新启动服务器,我从来没有真正弄明白这一点。Javascript不是处理文件的好语言。你最好使用相同的服务器端。嗨!欢迎来到堆栈溢出。请看,以及如何创建:如果没有看到一些代码,我们无法告诉您需要修复哪些代码:)您使用的是什么Web服务器?您可能可以使用Web服务器的设置来搜索如何在该文件上设置无缓存头。我已经包含了我正在使用的javascript代码——尽管我认为这不是代码本身的问题。我使用的是ApacheTomcatWeb服务器。对于这样的解决方案(如果我正确理解的话),我关心的是在文件路径被更改并以不同方式保存后,代码如何知道文件路径的名称?我的服务器端代码也使用Java,我对php不太熟悉。谢谢您的帮助。因此文件名不会更改。哈希只是url中的一个变量。你能再解释一下你的解决方案是如何工作的吗?抱歉,我不熟悉您在php代码中所做的工作。如果两个(或更多)不同的用户同时使用该页面,该解决方案是否也有效?我已经编辑了我的答案。希望这是可以理解的。管理文件上的并发更新是一项复杂得多的功能。