2008-09-22 17 views
11

Khi chúng tôi đang phát triển các trang web mới hoặc thử nghiệm các thay đổi trong các trang mới liên quan đến css sau khi mã mới được cam kết và ai đó đi kiểm tra các thay đổi, họ luôn thấy phiên bản được lưu trong bộ nhớ cache cũ. Điều này gây ra rất nhiều vấn đề trong thử nghiệm bởi vì mọi người không bao giờ chắc chắn liệu họ có màn hình css mới nhất trên màn hình hay không. Các giải pháp khả thi của tôi là gì?IIS CSS Caching

Trả lời

9

Nếu bạn đang phân phối CSS từ các tệp tĩnh (hoặc bất kỳ thứ gì mà chuỗi truy vấn không quan trọng), hãy thử thay đổi để đảm bảo rằng trình duyệt đưa ra yêu cầu mới, vì nó cho rằng nó đang kéo nguồn lực khác nhau, vì vậy có ví dụ: "styles.css thẻ = 1234"

trong tài liệu tham khảo CSS trong đánh dấu của bạn và thay đổi giá trị của "token" trên mỗi CSS check-in

+0

tôi đã sử dụng một phương pháp tĩnh để thêm css vào các trang web vì vậy tôi thêm một dấu thời gian của việc xây dựng để chuỗi truy vấn hoạt động nhờ tuyệt vời. – Greg

+0

Mặc dù giải pháp này sẽ làm việc nó là hoàn toàn không thực tế cho các trang web lớn có thể có hàng trăm tham chiếu đến tệp .css và .js. – Karlth

+0

@ user357320, tôi giới thiệu bạn đến các dòng 21 và 22 của trang này, theo một số định nghĩa là "trang web lớn". May mắn thay, đó là một trang web có cấu trúc và được thiết kế tốt nên không có hàng trăm tài liệu tham khảo để tranh luận. – Rob

5

Trong môi trường phát triển của bạn, hãy đặt tiêu đề Hết hạn thấp hơn nhiều. Trong môi trường sản xuất của bạn, thiết lập nó cao hơn, và sau đó thiết lập nó thấp khoảng một tuần trước khi bạn phát hành của bạn.

2

của nó không phải là một vĩ đại giải pháp, nhưng tôi đã giải quyết vấn đề này trước khi ở cấp trang bằng cách thêm chuỗi truy vấn vào cuối cuộc gọi tới tệp CSS:

<link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" /> 

Sau đó, tôi muốn ngẫu nhiên giá trị id để nó luôn tải một giá trị khác nhau khi tải trang. Sau đó, tôi sẽ lấy mã này ra trước khi đẩy vào sản xuất. Tôi cho rằng bạn cũng có thể kéo giá trị từ một tệp cấu hình để nó chỉ phải được nạp một lần cho mỗi lần commit.

2

tương tự (chi tiết hơn một chút) câu trả lời đưa ra cho phiên bản JavaScript của câu hỏi này, trong đó có cùng một vấn đề/giải pháp

Help with aggressive JavaScript caching