读取文件属性有多贵? 。净

时间:2009-08-25 18:13:10

标签: asp.net performance file-io

我们正在尝试将时间戳附加到某些网址,以便让事情缓存,但会在更改时刷新它们。我们的代码归结为:

DateTime ts = File.GetLastWriteTime(absPath);

其中absPath是url的MappedPath。因此,每次我们提供文件链接时,Web服务器都将检查此文件的上次写入时间。有点送给我的是 - 应该吗?

5 个答案:

答案 0 :(得分:7)

你应该对它进行性能测试,但我现在怀疑它比测试文件的存在(例如它是否是只读的)更昂贵,并且肯定比实际打开文件更便宜。

如果(经过测试)它确定它是一个问题,你也可以缓存你对GetLastWriteTime的调用(例如,对于任何给定的文件,不要每5秒调用一次)。

此外,我从未使用它,但如果缓存是一个问题,我希望你考虑将其实现委托给像Squid这样的专家,而不是自己动手。

答案 1 :(得分:2)

我没有试过这个,但你的问题与我一直在考虑的情况有关。

您没有说明哪些数据正在发生变化?数据库,xml数据等。

ASP.NET缓存确实支持基于各种依赖项更新缓存。

在基于文件的依赖关系,基于时间的依赖关系, 和基于密钥的依赖。

“依赖关系允许我们根据文件的更改,对其他Cache键的更改或在固定的时间点使Cache中的特定项无效。让我们看看每个依赖项。”

以下是文章:

http://msdn.microsoft.com/en-us/library/ms972379.aspx

由于

答案 2 :(得分:1)

基本上,你的“有多贵”这个问题有三个答案。

  1. 太贵了 - 你已经对它进行了测试,必须改变一些东西才能使系统可用。
  2. 可接受 - 您已经对它进行了测试并且效果不佳,但使用
  3. 的速度非常快
  4. 相当便宜 - 您已对其进行了测试,并且对性能没有明显影响。
  5. 我们无法真正回答你的问题,所以你只需要尝试一下。如果您认为它过于昂贵或者值得花时间将其从可接受的变为相当便宜,请更改问题以询问如何加快速度。

答案 3 :(得分:0)

生成链接时会产生额外的小磁盘I / O.如果您在很短的时间内创建了许多URL,这可能是一个瓶颈。没有人可以肯定地说这是否会影响你的情景 - 你真的需要衡量并看看这是否会成为一个问题。

答案 4 :(得分:0)

或者如果你担心它,为什么不暂时缓存它?