J'ai une application MVC en vue de la production d'une grande table HTML de valeurs (>20 MO).
Je suis de la compression de la vue dans le contrôleur à l'aide d'un filtre de compression
internal class CompressFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding))
return;
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("GZIP"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
Est-il un moyen de supprimer également la (très grande) montant de la redondance des espaces générés dans la vue avant que je ne le compresser le filtre (pour réduire la compression de la charge de travail et la taille)?
EDIT: J'ai eu de travail à l'aide de la WhiteSpaceFilter technique proposée par Womp ci-dessous.
Pour l'intérêt ici est les résultats, comme l'a analysé Firebug:
1) Pas de Compression, pas d'espace bande - 21MB, 2.59 minutes
2) Avec la compression GZIP, pas d'espace bande - 2MO, 17.59 s
3) Avec la compression GZIP, les espaces bande - 558kB, 12.77 s
Donc certainement la peine.