Я использую стиль кодирования как Ваш пример из Викиучебника. Несомненно, это не следует инструкциям C, но Haskell не C, и это довольно читаемо, особенно как только Вы привыкаете к нему. Это также сделано по образцу стиля алгоритмов, используемых во многих учебниках, как Cormen.
Есть несколько хороших источников, но вы хотите кэшировать свою обработку на стороне сервера и на стороне клиента.
Добавление заголовков 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);
Что касается кеширования на стороне сервера, это другой монстр ... и есть много ресурсов для кеширования ...
Я успешно использовал следующее и подумал, что стоит опубликовать здесь.
Из 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;
}
}
}