打开映射文件夹可以加快网络连接吗?

时间:2012-11-11 14:54:19

标签: vb6 network-programming

以下是该方案:

  • 我的客户端计算机通过路由器连接到位于数百英里之外的服务器(我认为它是某种VPN)
  • 我的VB6程序正在等待在服务器上创建文件(映射驱动器)
  • 我的vb6程序在看到文件时,通过其unc路径在本地获取该文件,并在本地打印到zebra打印机之前向底部添加一些文本(这是我在下一个处理后立即处理的一批文件一个循环)
  • 这需要大约30秒(应该不到1秒)
  • 当我远程连接以进行故障排除时,我以正常速度打印,没有30秒延迟
  • 在对从AV扫描到文件夹权限的所有内容进行故障排除时,我开始怀疑当我打开映射文件夹以观察放置到映射文件夹中的文件时,我的每个文件操作的速度/延迟都会消失。
  • 第二天,当客户运行它时 - 延迟回来
  • 我正在考虑在批处理开始测试之前添加一些代码来“打开”该窗口,但是甚至不确定如何编写代码。

所以我的问题是:在Windows资源管理器中打开映射文件夹能以某种方式加速我的程序传输文件吗?这似乎是正在发生的事情,但在我看来,它应该没有任何区别。

2 个答案:

答案 0 :(得分:4)

如果同样的问题和技术人员“内部”可以指向网络(操作系统级别)中文件系统的缓存。该缓存只在每隔这么多秒(在我的情况下为15秒)刷新一次。也不'关闭',也不'重置'可以强制服务器/ PC与文件刷新更快(甚至文件列表框中的.refresh也没有。)

所以,当我通过'Dir'询问网络是否存在文件时,我会在15秒后得到答案。

但是,当我假设文件存在时,我做了一个文件复制,我等待错误,惊喜......我立即得到文件或者我立刻得到错误。

顺便说一下,没有必要进行文件复制(例如,如果它是一个大文件)。重命名(并将其重命名为原始文件名)对我也一样。

我们花了很多时间来解决这个问题,但我们发现我们需要深入了解操作系统(并且每个版本都有所不同),因此,我们选择使用“硬编码”文件,也就是说,我们有服务器在本地(即在服务器上)生成带有他看到的文件的文本文件。该文本文件具有站点知道的硬编码名称...然后站点可以立即访问文件,而无需等待通过网络刷新文件系统。

我知道,这有点奇怪,但它确实对我们有用。

答案 1 :(得分:0)

欢迎你。也许下一次关于我们的解决方案的澄清可能会有所帮助。

当文件存在时,它立即通过网络可见。当在服务器上创建一个新的(创建不是由读取客户端完成)时,缓存的目录列表需要15-30秒才能刷新并且对于客户端(在VB中)可见。

远程连接程序通常会绕过此目录列表缓存。我们在VB中找不到一个好的,经济实惠的方法,但是我们可以使用这种方法。

现在我们使用一堆已知的文件名,服务器上已经存在的文件(对客户端来说是可见的)。在具有硬编码名称的文本文件中,客户端可以找到哪些文件可供他阅读。

奇怪的是......阅读意图文件(在文本文件中找到)正在读取内容,几乎没有任何延迟(在我们的测试中不到1秒)。延迟似乎只是出现在文件名中,而不是出现在内容中。