protected override byte[] ProcessBuffer(byte[] p)
{
try{
var cachify = context.Request.QueryString["cachify"];
if (cachify.EqualsIgnoreCase("no")) {
return p;
}
Encoding e = context.Response.ContentEncoding;
if (context.Response.ContentType.EqualsIgnoreCase("text/html")) {
string text = e.GetString(p);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
foreach (var item in doc.DocumentNode.Descendants())
{
ProcessTag(item, "img", "src");
ProcessTag(item, "script", "src");
ProcessTag(item, "link", "href");
}
doc.OptionWriteEmptyNodes = true;
using (StringWriter ms = new StringWriter()) {
doc.Save(ms);
p = e.GetBytes(ms.GetStringBuilder().ToString());
}
}
}catch(Exception ex){
return p;
}
return p;
}