1
私はasp.netコア1.0のGetVaryByCustomString関数を実装する方法を理解しようとしています。ResponseCache:.net 5または.net Core 1.0のGetVaryByCustomString?
asp.net core 1.0のような機能を実装しましたか?私はこの質問をした後
おかげ
私はasp.netコア1.0のGetVaryByCustomString関数を実装する方法を理解しようとしています。ResponseCache:.net 5または.net Core 1.0のGetVaryByCustomString?
asp.net core 1.0のような機能を実装しましたか?私はこの質問をした後
おかげ
は、ミドルウェアを使用すると、突然、私の心に来ていると私は以下のようなクラスを実装している:
public class OutputCacheHeaderMiddleware
{
private readonly RequestDelegate _next;
public OutputCacheHeaderMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var user = UserHelper.GetUser(context);
if (user?.UserInfos != null)
{
var key = "user_1_a_" + string.Join(",", user.UserInfos.Select(u => u.Id));
context.Request.Headers.Add("dt-cache-user", key);
}
await _next.Invoke(context);
}
}
してから、そのための拡張メソッドがあります:
public static class OutputCacheHeaderExtensions
{
public static IApplicationBuilder UseOutputCacheHeader(this IApplicationBuilder builder)
{
return builder.UseMiddleware<OutputCacheHeaderMiddleware>();
}
}
とStartup.cs設定方法において、iがapp.UseOutputCacheHeader();
とコントローラ上の:このすべての後
[ResponseCache(VaryByHeader = "dt-cache-user", Duration = 6000)]
public IActionResult Index()
{
return View();
}
、私はそれをデバッグするとき、私は適切な値を持つヘッダ「DT-キャッシュ・ユーザー」があることがわかりますが、のResponseCacheではありませんワーキング。 F5を押してページを更新するたびに、常にデバッグポイントに当たっていました。
これはうまくいかない理由は何ですか?
ありがとうございました。
応答キャッシュのキャッシュは、ブラウザによって異なります。たとえば、Google Chromeでは、手動でページを更新するか、キャッシュを無効にするようにdevツールが設定されている場合は、常にリクエストが送信されます。索引ページに一度移動した後、その索引ページへのリンクをクリックしてみてください。 –
私は特に "Disable Cahce"チェックボックスをコントロールしましたが、チェックが外されました。リフレッシュアクションとナビゲートアクションの両方が機能しませんでした。 –