2008-08-22 23 views
9

Tôi có một ứng dụng ASP.NET webforms (3.5 SP1) mà tôi đang làm việc trên, và cố gắng để cho phép gzip fpr HTML và CSS đi xuống đường ống. Tôi đang sử dụng this implementation (và đã thử một vài người khác móc vào Application_BeginRequest) và dường như đang làm hỏng tệp CSS bên ngoài mà các trang sử dụng, nhưng không liên tục ... đột nhiên tất cả các kiểu sẽ biến mất trên trang làm mới. trong một thời gian, và sau đó đột nhiên bắt đầu làm việc trở lại.Tại sao ASP.NET gzip nén tham nhũng CSS?

Cả IE7 và FF3 đều thể hiện hành vi này. Khi xem CSS bằng cách sử dụng thanh công cụ dành cho nhà phát triển web, thanh công cụ sẽ trả về tỷ lệ jibberish. Tiêu đề bộ nhớ cache kiểm soát là thông qua "tư nhân", nhưng tôi không biết đủ để tìm ra nếu đó là một yếu tố góp phần hay không.

Ngoài ra, điều này đang chạy trên máy chủ phát triển ASP.NET. Có lẽ nó sẽ ổn với IIS, nhưng tôi đang phát triển trên XP và nó sẽ là IIS5.

Trả lời

5

Chỉ có các tệp CSS bị hỏng? Các tệp JS (hoặc bất kỳ tệp văn bản tĩnh nào khác) có ổn không?

Bạn cũng có thể sao chép hành vi nếu bạn duyệt trực tiếp đến tệp CSS không?

Tôi đã chỉ cho phép nén trên IIS Windows 2003 máy chủ bằng cách sử dụng phương pháp này:

  1. IIS → Web Sites → Properties → Dịch vụ, chọn cả hai hộp
  2. IIS → Web Service Extensions → Nhấp chuột phải, Thêm New
     
        Name 
         Http Compression 
        Required Files 
         %systemroot%\system32\inetsrv\gzip.dll
  3. IIS → nhấp chuột phải nút trên cùng, Internet Information Services, kiểm tra Enable Direct Metabase Sửa
  4. Sao lưu và chỉnh sửa %systemroot%\system32\inetsrv\MetaBase.xml
    1. Tìm Location ="/LM/W3SVC/Filters/Compression/gzip"
      • Thêm png, css, js và bất kỳ phần mở rộng tập tin tĩnh khác để HcFileExtensions
      • Thêm aspx và bất kỳ phần mở rộng thực thi khác để HcScriptFileExtensions
      • Lưu
  5. Khởi động lại IIS (chạy iisreset)

Nếu bạn có máy chủ Windows 2003/2008 để chơi với bạn có thể thử phương pháp đó.

+1

IE7/8 đang tải xuống các tệp zip bị hỏng trong khi Firefox/Chrome/Opera thì không. Điều này có vẻ là vì IIS6 là gzip nén tệp zip, điều này sẽ làm phiền IE. Giải pháp của bạn đã khắc phục được sự cố của tôi và IIS không còn cố gắng nén lại các tệp nén nữa. –

0

Nếu bạn sẽ triển khai trên IIS 6 hoặc IIS 7, chỉ cần sử dụng tính năng nén IIS tích hợp sẵn. Chúng tôi đang sử dụng nó trên các trang web sản xuất để nén HTML, CSS và JavaScript mà không bị lỗi. Nó cũng lưu trữ các phiên bản nén trên máy chủ, do đó, các hit nén chỉ được thực hiện một lần.

+0

Thật không may, việc sử dụng cài đặt mặc định có vẻ như phá vỡ các tệp zip trong IE7/8. Khi nó quay ra, theo mặc định IIS muốn thử nén các tập tin zip, mà là khá ngớ ngẩn. –