2012-05-02 51 views
6

Chiến lược tốt để tự động áp dụng và/hoặc cập nhật biến buster cache trên tham chiếu javascript và stylesheet của tôi trong trang web ASP.Net là gì?Chiến lược Buster Cache trong ASP.Net

Ví dụ: Chuyển

<script type="text/javascript" src="/js/myScript.js" /> 

để

<script type="text/javascript" src="/js/myScript.js?rev=12345" /> 

UPDATE: Tích hợp liên tục không cần thiết. Tôi đang sử dụng tích hợp liên tục (Jenkins để cụ thể), do đó, nó sẽ là tuyệt vời nếu phương pháp cập nhật các biến được dựa trên số xây dựng chẳng hạn.

Trong khi tôi có thể sống với việc áp dụng các biến gốc theo cách thủ công trong mã nguồn và chỉ cập nhật chúng thông qua chiến lược, nó sẽ là một bổ sung tốt đẹp nếu chiến lược cũng có thể áp dụng biến ban đầu nếu nó chưa tồn tại mã cũ).

Tắt đầu của tôi, tôi có thể tưởng tượng bằng cách sử dụng tập lệnh Powershell quét tất cả các tệp * .aspx và * .ascx và sử dụng biểu thức chính quy để tìm các tham chiếu thích hợp và cập nhật chúng. Nhưng bạn biết họ nói gì về việc sử dụng cụm từ thông dụng ... sau đó tôi có hai vấn đề :)

Trả lời

3

Câu trả lời cho biến buster cache trong ASP.Net là sử dụng một trong các thư viện giảm thiểu CSS/JS khác nhau.

Tôi đã suy nghĩ rằng các biến xuất bộ nhớ cache sẽ cần phải được cập nhật với mỗi triển khai đến các máy chủ của chúng tôi, nhưng các thư viện việc rút gọn áp dụng một thẻ băm dựa trên nội dung của các tập tin/JS CSS cá nhân.

Vì tôi đang phát triển trang web .Net 3.5, các lựa chọn của tôi bị hạn chế một chút. Tôi đã sử dụng SquishIt (có sẵn dưới dạng gói NuGet) và rất dễ tích hợp.

<link href="/<my_css_path>/<css_file_1>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_2>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_3>.css" rel="stylesheet" type="text/css" /> 

trở thành

<%= Bundle.Css() 
    .Add("~/<my_css_path>") 
    .Render("~/<my_css_path>/combined_#.css") %> 

và đó là về cơ bản nó! Ý tưởng tương tự với javascript. Miễn là debug="true" trong web.config của bạn để phát triển cục bộ và debug="false" cho môi trường dàn dựng/sản xuất của bạn, SquishIt sẽ để lại CSS/JS không phân biệt và chưa được sửa đổi để phát triển địa phương và sau đó kết hợp, rút ​​gọn và băm (cho bộ nhớ cache busting) môi trường khác.

+0

Điều đó thật tuyệt vời! Rất vui khi họ nghĩ về phiên bản không được rút gọn ở địa phương. – devlord

3

Bạn cũng có thể muốn xem xét Cassette, RequestReduce và Bundler.

Cassette: Tự động sắp xếp, nối, thu nhỏ, lưu trữ và phiên bản tất cả các mẫu JavaScript, CoffeeScript, CSS, LESS, Sass và HTML của bạn.

RequestReduce Làm cho trang web của bạn nhanh hơn - đôi khi nhanh hơn nhiều - với nỗ lực gần như

  • Auto tạo sprites từ hình ảnh nền của bạn
  • Tối ưu hoá định dạng Sprite PNG và nén
  • Minifies CSS và Javascript
  • Tối ưu hóa tiêu đề bộ nhớ đệm và ETags
  • Chạy trên mọi trang web IIS bao gồm ASP cổ điển và PHP
  • có thể đồng bộ hóa nội dung trên nhiều máy chủ web
  • trình tốt với CDN
  • Biên dịch Less, Sass và cà phê kịch bản

Bundler: "Compile, Thu nhỏ, Kết hợp các file Less/Sass/Css/JS/CoffeeScript . Dễ dàng sử dụng từ MVC "

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