我正在使用RangeFilePathResult
该类从 MVC 控制器提供 mp3 文件。
动作定义如下:
[CacheFilter]
[OutputCache(CacheProfile = "Mp3Cache")]
public RangeFilePathResult Mp3Completed(string f)
{
FileInfo info = new FileInfo(string.Format("C:\\test\\{0}.mp3", f));
return new RangeFilePathResult("audio/mpeg", info.FullName, info.LastWriteTimeUtc, info.Length);
}
并且缓存策略如下:
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Mp3Cache" duration="3600" varyByParam="f" location="Any" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
为什么这可以正常工作?似乎您需要明确varyByHeader
确保范围请求与输出缓存一起使用?我要解决的问题是 iOS 上的 jPlayer 将无法显示 MP3 文件的持续时间,并且在使用传统 FilePathResult 服务时会呈现 NaN - 它在此实现下工作。