Cải thiện thời gian load trang với CSSmin

Như chúng ta đã biết trong ứng dụng web 2.0 thì CSS luôn đóng vai trò chủ đạo, ứng dụng của bạn càng lớn thì và càng nhiều giao diện thì bạn càng phải dùng đến nhiều CSS dẫn đến dung lượng file CSS của bạn không hề nhỏ khi đó thời gian để tải website của bạn sẽ lâu hơn, để giảm thiểu dung lượng và tối ưu hóa nội dung file CSS chúng ta viết code như sau:

public static string CompressCSS(string body)
{
body = Regex.Replace(body, "/\\*.+?\\*/", "", RegexOptions.Singleline);
body = body.Replace(" ", string.Empty);
body = body.Replace(Environment.NewLine + Environment.NewLine + Environment.NewLine, string.Empty);
body = body.Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
body = body.Replace(Environment.NewLine, string.Empty);
body = body.Replace("\\t", string.Empty);
body = body.Replace(" {", "{");
body = body.Replace(" :", ":");
body = body.Replace(": ", ":");
body = body.Replace(", ", ",");
body = body.Replace("; ", ";");
body = body.Replace(";}", "}");
body = Regex.Replace(body, "/\\*[^\\*]*\\*+([^/\\*]*\\*+)*/", "$1");
body = Regex.Replace(body, "(?])\\s{2,}(?=[<])|(?])\\s{2,}(?= )|(?<=&ndsp;)\\s{2,}(?=[<])", string.Empty);

return body;
}

Get tất cả file CSS lên
public static IList GetFiles(string serverPath, string extention)
{
if (!serverPath.StartsWith("~/"))
{
if (serverPath.StartsWith("/"))
serverPath = "~" + serverPath;
else
serverPath = "~/" + serverPath;
}

string path = HttpContext.Current.Server.MapPath(serverPath);

if (!path.EndsWith("/"))
path = path + "/";

if (!Directory.Exists(path))
throw new System.IO.DirectoryNotFoundException();

IList files = new List();

string[] fileNames = Directory.GetFiles(path, "*." + extention, System.IO.SearchOption.AllDirectories);
foreach (string name in fileNames)
files.Add(new FileInfo(name));

return files;
}

Combine lại
public static string CombineCSS()
{
string allCSS = string.Empty;

foreach (FileInfo fi in Logic.Files.GetFiles("~/Content/CSS/", "css"))
{
using (StreamReader sr = new StreamReader(fi.FullName))
allCSS += sr.ReadToEnd();
}

allCSS = allCSS.Replace("~/", Global.BaseURL);

allCSS = Compress(allCSS);

return allCSS;
}

Tạo 1 file CombineCSS.ashx
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/css";
context.Response.Write(CombineCSS());
}

tích hợp vào phần header của website:


sưu tầm

Về tieuyeuit
Lập trình viên Asp.net Tôi chia sẻ một,bạn chia sẻ một và chúng ta có rất nhiều!

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: