2010-01-28 18 views
6

Công ty tôi làm việc để có các máy gia tốc proxy/WAN giữa các trang web quốc tế của chúng tôi để cache nội dung web Intranet. Tôi có một ứng dụng Silverlight được lưu trữ trên một máy chủ tại một địa điểm, nhưng được khách hàng truy cập ở một vị trí khác. Khi người dùng truy cập trang web lưu trữ ứng dụng Silverlight, họ sẽ nhận được tệp xap cũ được lưu trữ bởi proxy và không phải là phiên bản mới nhất từ ​​máy chủ. Người dùng cục bộ luôn nhận được xap mới nhất khi yêu cầu của họ không thông qua proxy.Ngăn chặn Silverlight xap bị lưu trữ bởi máy chủ proxy

Tôi đã thử các kỹ thuật tiêu đề/siêu dữ liệu khác nhau được đề cập ở nơi khác để ngăn bộ nhớ đệm và bản thân trang web chứa đang được phân phát mới nhưng tôi vẫn nhận được tệp .xap cũ. Không có người quản trị CNTT nào của chúng tôi để vô hiệu hóa proxy caching cho trang web của tôi, có bất kỳ điều gì tôi có thể làm để đảm bảo tệp xap mới nhất được truy xuất từ ​​máy chủ thay vì proxy không? Trang chứa là ASP.NET.

Trả lời

4

Điều tôi làm là thêm chuỗi truy vấn ở cuối đường dẫn đến tệp xap. Sau đó, khi bạn thay đổi biến chuỗi truy vấn, proxy vv sẽ xem nó như là một yêu cầu cho một tệp mới. Cho đến nay điều này đã làm việc tốt cho tôi.

Vì vậy, về cơ bản, khi nhúng một .xap trong một file HTML thẳng lên, bạn sẽ làm điều này:

<param name="source" value="ClientBin/SilverlightApplication1.xap?cachepreventer=whatevervalue"/> 

Và sau đó khi bạn triển khai một phiên bản mới, chỉ cần thay đổi "whatevervalue" để cái gì khác.

EDIT
Nếu bạn cần phải sử dụng kỹ thuật này ở nhiều nơi trong ứng dụng của bạn tôi sẽ đọc các giá trị chuỗi truy vấn từ cấu hình và chỉ cần viết nó vào trang bằng cách sử dụng asp.net. Bằng cách đó bạn chỉ cần cập nhật nó ở một nơi khi bạn triển khai.

+0

Hoàn hảo! Điều đó đã làm các trick, cảm ơn. –

+0

Trong giải pháp SL của tôi, anyvalue là dấu thời gian (số đánh dấu) của tệp XAP trên đĩa. Tôi đã triển khai trình trợ giúp ASP.NET nhỏ gắn thêm dấu thời gian làm truy vấn tên của tệp. Bằng cách đó, nó hoàn toàn tự động và bạn không cần phải cập nhật bất cứ thứ gì ở bất cứ đâu - chỉ cần thả XAP vào ClientBin và nó được tự động làm mới khi người dùng cố gắng tìm nạp nó. Sau đó, trong ASPX, tôi có một cái gì đó như: " /> –

+0

Điều đó thực sự thông minh. Tôi có thể quyết định chuyển sang kỹ thuật đó. –

2

Nếu bạn muốn chắc chắn mỗi khi file XAP được lấy ra và bạn không muốn phải lo lắng về điều đó - chỉ cần sử dụng < param name = "nguồn" value = "ClientBin/YourSilverlightapp.xap < % = Guid.NewGuid(). ToString()% > "/ >

tất nhiên - điều này tự cho phép tải bộ nhớ cache nặng hơn. Tôi làm như phương pháp trợ giúp ở trên mặc dù nếu bạn chỉ muốn thay đổi được tuyên truyền cho khách hàng.

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