xioxu
2023-01-16 17:09:31 +08:00
这是 chatGPT 生成的示例代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
public class CacheFilter : IActionFilter
{
private static ConcurrentDictionary<string, byte[]> _cache = new ConcurrentDictionary<string, byte[]>();
public void OnActionExecuted(ActionExecutedContext context)
{
if (context.Result is FileResult)
{
// 缓存 FileResult 类型的结果
var file = context.Result as FileResult;
using (var stream = new MemoryStream())
{
file.CopyTo(stream);
var key = $"{context.HttpContext.Request.Path}{context.HttpContext.Request.QueryString}";
_cache.TryAdd(key, stream.ToArray());
}
}
}
public void OnActionExecuting(ActionExecutingContext context)
{
var key = $"{context.HttpContext.Request.Path}{context.HttpContext.Request.QueryString}";
if (_cache.TryGetValue(key, out var data))
{
// 如果缓存中有,则直接返回
context.Result = new FileContentResult(data, "application/octet-stream");
}
}
}