1

我每 10 分钟将一个 200k JSON 文件从控制台应用程序写入 IIS 框的 Web 文件夹。移动客户端定期通过 IIS 从该文件中获取数据。

想知道如果 IIS 在写入文件时遇到文件会发生什么。这个问题说 File.WriteAllText 使用 FileShare.Read - 所以有人可以在写入时阅读它。

我将用一个 v. 大文件对此进行测试,看看 IIS 在写入过程中如何处理请求。我记得 UNIX 中的一个技巧是写入版本文件json.201207231033并将符号链接更新为json.

其他人有这方面的经验吗?

4

1 回答 1

1

以下是我将如何使用 ASP.NET 页面中的以下伪代码来解决您的问题。您要将结果缓存在内存中,并在数据在缓存中超过 10 分钟时刷新数据。

    var data = Cache["data"];
    if (data.Timestamp <= 
        DateTime.Now.Substract(TimeSpan.FromMinutes(10)))
    {
            //Refresh cache with new data when it's older than 10min.
            // You could hypothetically do this in a separate thread
            // if you wanted to do so.      
            data = new Data(GetFromDb(), timestamp);
            Cache["data"] = data;

            return Cache["data"];
    }
    else
    {
            //Use existing data
            return Cache["data"];
    }            

这是关于如何使用 IIS 的运行时缓存的参考。

如果您想确保您的缓存值始终是新鲜的,您可以创建一个每 10 分钟访问一次此页面的作业,而不是您当前解决方案的方法。

还有很多其他方法可以用来缓存数据,但使用 OS 文件系统并不是真正的最佳方法。

于 2012-07-23T17:19:15.120 回答