Как использовать кэширование вывода на .ashx обработчике

Я использую стиль кодирования как Ваш пример из Викиучебника. Несомненно, это не следует инструкциям C, но Haskell не C, и это довольно читаемо, особенно как только Вы привыкаете к нему. Это также сделано по образцу стиля алгоритмов, используемых во многих учебниках, как Cormen.

25
задан Kieran Benton 10 July 2009 в 14:09
поделиться

2 ответа

Есть несколько хороших источников, но вы хотите кэшировать свою обработку на стороне сервера и на стороне клиента.

Добавление заголовков HTTP должно помочь в кэшировании на стороне клиента

вот некоторые заголовки ответов для начала ...

Вы можете часами настраивать их, пока не добьетесь желаемой производительности

//Adds document content type
context.Response.ContentType = currentDocument.MimeType;
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10));
context.Response.Cache.SetMaxAge(new TimeSpan(0,10,0)); 
context.Response.AddHeader("Last-Modified", currentDocument.LastUpdated.ToLongDateString());

// Send back the file content
context.Response.BinaryWrite(currentDocument.Document);

Что касается кеширования на стороне сервера, это другой монстр ... и есть много ресурсов для кеширования ...

36
ответ дан 28 November 2019 в 18:32
поделиться

Я успешно использовал следующее и подумал, что стоит опубликовать здесь.

Ручное управление кешем вывода страницы ASP.NET

Из http://dotnetperls.com/cache-examples-aspnet

Установка параметров кеширования в файлах Handler.ashx

Во-первых, вы можете используйте обработчики HTTP в ASP.NET для более быстрого способа сервера динамического контента, чем страницы веб-форм. Handler.ashx - это имя по умолчанию для ASP Общий обработчик .NET. Вам необходимо использовать параметр HttpContext и таким образом получить доступ к ответу.

Образец кода извлечен:

<%@ WebHandler Language="C#" Class="Handler" %>

C # для кеширования ответа на 1 час

using System;
using System.Web;

public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        // Cache this handler response for 1 hour.
        HttpCachePolicy c = context.Response.Cache;
        c.SetCacheability(HttpCacheability.Public);
        c.SetMaxAge(new TimeSpan(1, 0, 0));
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}
4
ответ дан 28 November 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: