asp.net http 处理程序和动态 css 生成
我正在编写一个 http 处理程序,它将加载一个文件(css 模板),修改其内容并将其作为文本/css 提供。
我的代码基于我在这里找到的示例:
http ://madskristensen.net/post/Remove-whitespace-from-stylesheets-and-JavaScript-files.aspx
代码的业务部分是:
public void ProcessRequest(HttpContext context)
{
try
{
string file = context.Request.PhysicalPath;
if (!File.Exists(file))
return;
string body = string.Empty;
if (context.Cache[CSS_CACHE_BODY + file] != null)
body = context.Cache[CSS_CACHE_BODY + file].ToString();
if (body == string.Empty)
{
StreamReader reader = new StreamReader(file);
body = reader.ReadToEnd();
reader.Close();
// Modify css template here
CacheDependency cd = new CacheDependency(file);
context.Cache.Insert(CSS_CACHE_BODY + file, body, cd);
}
context.Response.ContentType = "text/css";
context.Response.Write(body);
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
如果人们可以评论效率和这段代码的鲁棒性。我宁愿不要等到生产环境才发现有问题!
I am writing a http handler that will load a file (css template) modify it's contents and serve it up as text/css.
I am basing the code on an example I found here:
http://madskristensen.net/post/Remove-whitespace-from-stylesheets-and-JavaScript-files.aspx
The business part of the code is:
public void ProcessRequest(HttpContext context)
{
try
{
string file = context.Request.PhysicalPath;
if (!File.Exists(file))
return;
string body = string.Empty;
if (context.Cache[CSS_CACHE_BODY + file] != null)
body = context.Cache[CSS_CACHE_BODY + file].ToString();
if (body == string.Empty)
{
StreamReader reader = new StreamReader(file);
body = reader.ReadToEnd();
reader.Close();
// Modify css template here
CacheDependency cd = new CacheDependency(file);
context.Cache.Insert(CSS_CACHE_BODY + file, body, cd);
}
context.Response.ContentType = "text/css";
context.Response.Write(body);
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
I would appreciate if people could comment on the efficency and robustness of this code. I would rather not wait until it is a production environment to find out any problems!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一些性能提示,您可以缓存客户端的响应(使用 HTTP 标头)。而且在发送响应之前,您可以对输出使用空白删除方法。另一点是压缩:如果浏览器支持,则压缩响应。
客户端缓存示例(VB 中):
CSS 的空白删除函数示例:
JS 的空白删除函数示例:
以下是压缩输出的示例:
There are some performance tips, you can cache the response client-side (using HTTP Headers). Andalso before sending the response, you can use White Space Removal method for your output. Another point is compression: compress the reponse if the browser support it.
Sample of client-side caching (in VB):
Sample of White Space Removel function for CSS:
Sample of White Space Removel function for JS:
Here is a sample to compress the output: