2008-10-31 33 views
33

Các cách mà theo đó chúng ta có thể giảm kích thước của Phản hồi HTML được gửi bởi một ứng dụng asp.net là gì?Giảm bớt đầu ra Html của Ứng dụng ASP.NET

Tôi đang sử dụng các Điều khiển không thuộc sở hữu của tôi và nó tạo ra đầu ra có khoảng trắng. Tôi quan tâm đến việc giảm thiểu toàn bộ đầu ra HTML của trang giống như cách Google thực hiện (Xem nguồn www.google.com) để cải thiện thời gian.

Có bất kỳ lớp Tiện ích nào có sẵn cho ASP.NET có thể làm công cụ này cho tôi không?

Trả lời

31

Không cần phải làm điều đó trong thời gian chạy. Bởi vì nó có thể được thực hiện tại thời gian biên dịch.

Chi tiết: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html

+0

Liên kết tuyệt vời. Đây là giải pháp của tôi cho http://stackoverflow.com/questions/7121371/asp-net-mvc-razor-how-to-keep-nicely-indented-code-without-sending-a-load-of-w –

+0

Cách bạn đã áp dụng điều này trong dự án? Xin lỗi vì sự thiếu hiểu biết của tôi, nhưng tôi không thể làm cho nó hoạt động được. – fiberOptics

+0

@ryan Bạn gặp phải lỗi gì? Bạn đã chỉ định pageParserFilterType trong web.config chưa? – thorn

6

Tôi muốn nhận xét về đề xuất của Thorn (nhưng tôi mới làm quen với chồng tràn).

  1. Mã liên kết (omari-o.blogspot.com) không hỗ trợ MVC4, và mặc dù mã này là mã nguồn mở nó không thể dễ dàng được nâng cấp vì những thay đổi phanh giữa MVC3 và MVC4.

  2. Có thể có khoảng trắng được ghi vào kết quả http khi chạy, chỉ nhà phát triển của trang web thực sự mới biết điều đó. Do đó, việc tối thiểu hóa tĩnh của các tệp mẫu (aspx) không hề dễ dàng chút nào. Việc khai thác động, được đề xuất bởi gius, nên được sử dụng để đảm bảo rằng khoảng trắng được loại bỏ một cách chính xác, và không may điều này sẽ phải chịu chi phí tính toán thời gian chạy. Nếu mã động ghi dấu cách vào đầu ra, nó sẽ phải được xóa động.

9

Đối với nền tảng Microsoft .NET có thư viện được gọi là WebMarkupMin, giúp rút gọn mã HTML. Đối với mỗi khung ASP.NET có mô-đun riêng của mình:

  • ASP.NET Core - WebMarkupMin.Web. Thực hiện như một mô-đun HTTP, do đó, nó có thể làm việc với bất kỳ khuôn khổ nào. Thích hợp để sử dụng trong ASP.NET Web Pages framework (Razor).
  • ASP.NET MVC - WebMarkupMin.Mvc
  • ASP.NET Web Forms - WebMarkupMin.WebForms

Tài liệu có sẵn tại - http://webmarkupmin.codeplex.com/documentation

+0

Công cụ của bạn có biết cách rút gọn mã dao cạo không? – Veverke

+0

WebMarkupMin không thể giảm thiểu mã dao cạo, nhưng nó có thể rút ngắn mã HTML đầu ra. –

+0

vậy bạn sử dụng nó như thế nào? Tôi thấy bạn có thể tải xuống và cài đặt cho các hình thức web asp.net nhưng sau đó những gì? http://www.nuget.org/packages/WebMarkupMin.AspNet4.WebForms/ –

3

Câu trả lời được chấp nhận không làm việc với MVC 4, vì vậy đây là một lib tương tự mà minifies tại build-time https://github.com/jitbit/HtmlOptimizerMvc4

+0

bạn có gặp bất kỳ sự cố nào với VS dừng lại để nhận ra @model trong quan điểm của bạn không? – Veverke

+0

Tại sao bạn đăng một phiên bản chia đôi mà không có bất kỳ sửa đổi nào? – Dehli

2

Chỉ cần thêm một lựa chọn tôi không thấy liệt kê ở đây, đó là một trong tôi đã được đề nghị sử dụng:

Html minifier command line tool

Cách sử dụng: herehere

Có một vấn đề Tuy nhiên, với công cụ này: nó để lại dòng đơn (//) bình luận, và nó gây ra vấn đề cho Razor phân tích cú pháp, vì một lời nhận xét dòng đơn đặt trong một C# khối như sau:

@{ 
    ... 
    ... 
    // anything 
    ... 
} 

sẽ gây ra phần còn lại đầu ra việc rút gọn của dòng, từ thời điểm này trở đi, để được bỏ qua bởi các cú pháp Razor, mà do đó sẽ nâng cao một lỗi nêu có nó không thể tìm thấy bế mạc "}" cho khối.

Giải pháp khắc phục của tôi cho vấn đề này là hoàn toàn xóa các nhận xét này khỏi đầu ra. Bằng cách này, hoạt động. Để thực hiện việc đó, chỉ cần xóa RegexOptions.SingleLine khỏi dòng 145:

htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/); 
+1

Sự cố này phải được khắc phục trong phiên bản mới nhất - https://github.com/deanhume/html-minifier – Deano

+1

nó đã được xuất bản ở đó? – Veverke

Các vấn đề liên quan