2015-10-15 22 views
8

Tôi đang sửa lỗi với ASP.NET OutputCache và điều đó khiến tôi phát điên. Chúng tôi muốn lưu vào bộ nhớ đệm trên máy chủ nhưng có vẻ như không hoạt động (đã xảy ra cách đây một thời gian, trong phiên bản cũ hơn của ứng dụng của chúng tôi, nhưng gần đây chúng tôi đã phát hiện lỗi này).Làm thế nào để xác minh ASP.NET MVC OutputCache hoạt động trên máy chủ?

Tại địa phương, tôi không thể nhận được bộ nhớ đệm hoạt động ở phía máy chủ. Sử dụng thuộc tính này:

[OutputCache(CacheProfile = "MyProfile", Location = OutputCacheLocation.Server)] // doesn't work 

Bây giờ, dựa trên một vài điều tôi đã đọc bởi googling xung quanh, đây có thể là thông tin liên quan:

  • Output caching được kích hoạt trong IIS (localhost)
  • Tôi DO sử dụng một AuthorizeAttribute (một tùy chỉnh có thừa kế). Tôi đã gỡ lỗi về điều này một cách cụ thể, và tôi tự tin 95% đây không phải là nguyên nhân.
  • Tôi đã sử dụng nhiều giá trị VaryByParams khác nhau, không có gì hoạt động.
  • Caching hiện làm việc phía máy khách.

tôi đã mở một phiên perfmon và thêm một số quầy từ nhóm Web Service Cache, tất cả tôi thấy là có URL cache nhưng bộ nhớ cache là bỏ lỡ:

perfmon graph

Các vấn đề lớn hơn/lỗi chúng ta đang phải đối mặt bây giờ là OutputCache là không hoạt động ở tất cả ngay bây giờ. Chúng tôi đã có thể khắc phục điều đó bằng cách chỉ định VaryByParams="" (một chuỗi trống). Điều đó đã làm cho khách hàng. Nhưng nó không làm việc phía máy chủ nào được nêu ra.

Tôi thực sự đang kiểm tra xem nó có hoạt động hay không bằng cách đặt điểm ngắt lỗi trong hành động sẽ được lưu vào bộ nhớ cache. Nó bị tấn công mọi lúc, điều này có nghĩa là bộ nhớ cache không bị tấn công.

+0

Tôi gặp sự cố tương tự và đó là sự cố với cấu hình bộ nhớ cache. Nếu tôi không sử dụng một hồ sơ bộ nhớ cache và thay vào đó cắm trực tiếp các giá trị vào các thuộc tính contructor nó làm việc. Bạn đã thử chưa – heymega

+0

@heymega Tôi đã thử nó, và nó không tạo nên sự khác biệt. – MarioDS

+0

@MarioDS: Tôi đang gặp sự cố tương tự. Bạn đã quản lý để giải quyết điều này? – user1107799

Trả lời

0

Từ http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs:

Không có đảm bảo rằng nội dung sẽ được lưu trữ cho số lượng thời gian mà bạn chỉ định. Khi tài nguyên bộ nhớ trở nên thấp, bộ nhớ cache bắt đầu tự động xóa nội dung.

Nếu tài nguyên bộ nhớ có sẵn trên máy chủ của bạn đủ thấp trong khi thử nghiệm, bộ nhớ cache sẽ xóa nội dung ngay lập tức. Tôi chắc rằng nó thậm chí có thể từ chối đưa nội dung của bạn vào bộ nhớ cache.

+0

Cảm ơn bạn đã cung cấp một lý do, nhưng đó không phải là nó trong trường hợp của chúng tôi. – MarioDS

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