2011-06-14 10 views
9

Như bạn biết tất cả, bạn có thể xây dựng một gói XSD Silverlight và tham khảo nó bằng cách sử dụng thẻ đối tượng trên trang HTML hoặc trang asp.net của bạn.Trình duyệt xử lý bộ nhớ đệm của các gói XAP như thế nào?

Khi trình duyệt tải xuống gói XAP từ máy chủ lần đầu tiên trang được tham chiếu bởi người dùng, nếu người dùng làm mới cùng một trang, có tải xuống lại gói XAP hoặc sử dụng phiên bản được lưu trong bộ nhớ cache không?

Nếu người dùng điều hướng đến một trang có sử dụng gói XAP cùng và gói XAP đã được tải về vì trang trước người sử dụng là trên, hiện các trình duyệt sử dụng một phiên bản cache hoặc truy cập vào máy chủ và tải về nó một lần nữa?

Nếu trình duyệt sử dụng phiên bản cache tất cả các thời gian, làm thế nào để nó biết khi nào nên sử dụng phiên bản được lưu và khi nào sử dụng phiên bản mới của gói XAP vì nó có thể đã được xây dựng lại với những thay đổi mới? Nó có liên quan gì đến số phiên bản của gói không?

Trả lời

9

XAP được coi như một tập tin tài nguyên thường xuyên giống như hình ảnh (png/gif/jpg v.v.) Trình duyệt không tải xuống bản sao mới cho đến khi các điều kiện HTTP Cache của nó được khớp với nhau, nằm ngoài phạm vi để giải thích tại đây. Giải pháp duy nhất mà chúng tôi đã điều chỉnh là nối "? Tag" sau URL của XAP và thẻ có thể thay thế số phiên bản sẽ buộc trình duyệt tải lại tệp xuống.

Vì vậy, chúng tôi tag url của chúng tôi như ..

MySilverlightClient.xap?v1 
MySilverlightClient.xap?v2 

vv Vì vậy, ngay cả khi nó được lưu lại để phiên bản hiện tại không có vấn đề, nhưng khi một phiên bản mới được thay đổi trên phía máy chủ, chúng tôi có thể thay đổi chúng tôi thẻ v1 cho một thứ khác sẽ buộc trình duyệt coi đó là URL mới và tải xuống lại ngay cả khi được lưu trong bộ nhớ cache.

+0

Bạn phải nhớ cập nhật thẻ phiên bản trong tất cả các tệp HTML bằng XAP, phần lớn thời gian đó không quá nhiều vấn đề vì bạn thường chỉ có nó trong một tệp HTML. Tại sao không cấu hình tiêu đề kiểm soát bộ nhớ cache trên thư mục ClientBin của bạn không hoạt động cho bạn? – AnthonyWJones

+0

Tôi không có nhiều kinh nghiệm trong việc định cấu hình tiêu đề kiểm soát bộ nhớ cache, bạn có thể chỉ cho tôi theo hướng mà tôi có thể tìm hiểu thêm không? – ActiveX

+0

Giới thiệu về URL, vì vậy nếu tôi thay đổi URL bạn đang nói rằng trình duyệt sẽ tải xuống lại tài nguyên thay vì sử dụng nó từ bộ nhớ cache? Điều này có đơn giản không? – ActiveX

2

Tôi có thể trả lời phần đầu tiên của câu hỏi của bạn, đó là trình duyệt sử dụng bản sao XAP được lưu trong bộ nhớ cache khi bạn truy cập lại/làm mới trang. Trong thực tế, nó có thể khá thú vị để có được trình duyệt để tải về một bản sao mới!

Mỗi trình duyệt hoạt động khác nhau ở đây, tất nhiên, với IE dường như là cứng đầu nhất về việc cập nhật XAP khi tệp nguồn đã thay đổi. Như Anthony đã chỉ ra trong các bình luận, XAP đang được xử lý giống như bất kỳ tệp nội dung nào khác theo xử lý bộ nhớ cache nội dung mặc định của trình duyệt.

Có một số giải pháp tốt trong câu hỏi tương tự này bao gồm những cách khác để đảm bảo XAP được cập nhật:

Making the Silverlight XAP file expire from browser cache programmatically

+2

IE tạo nên các quy tắc riêng nếu máy chủ không hiểu rõ hành vi lưu vào bộ nhớ cache là gì. Hầu hết các trình duyệt sẽ hoạt động khá ổn định nếu máy chủ cung cấp tiêu đề kiểm soát bộ nhớ cache chính xác ngay từ đầu. Câu trả lời cho hầu hết các câu hỏi "Xap caching" là khá giống với câu hỏi "PNG caching": hiểu cách hoạt động của bộ nhớ đệm trong HTTP. – AnthonyWJones

+0

@AnthonyWJones Cảm ơn, có ý nghĩa. –