Nếu hành động điều khiển có thuộc tính OutputCache xác định trên một hành động, có cách nào để xóa bộ đệm đầu ra mà không cần phải khởi động lại IIS?Làm thế nào để programmatically rõ ràng outputcache cho phương pháp hành động điều khiển
[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
var someModel = SomeModel.Find(param1, param2);
//set up ViewData
...
return RenderToString("ViewName", someModel);
}
Tôi đang xem xét sử dụng HttpResponse.RemoveOutputCacheItem(string path)
để xóa nó, nhưng tôi đang gặp khó khăn để tìm ra những con đường nên để ánh xạ nó vào phương pháp hành động. Tôi sẽ thử lại với trang aspx được hiển thị bởi ViewName.
Có thể tôi sẽ tự chèn đầu ra của RenderToString
vào số HttpContext.Cache
thay vào đó nếu tôi không thể tìm ra kết quả này.
Cập nhật
Xin lưu ý rằng OutputCache là VaryByParam, và thử nghiệm ra một con đường mã hóa cứng "/ controller/action" không thực sự rõ ràng OutputCache, vì vậy nó có vẻ như nó có để phù hợp với "/ điều khiển/action/param1/param2 ".
Điều đó có nghĩa tôi có lẽ sẽ phải trở lại để phản đối mức bộ nhớ đệm và bộ nhớ cache bằng tay đầu ra cho RenderToString()
:(
Cố gắng thêm 'location =" Server "' vào thuộc tính OutputCache - bạn không thể xóa bộ nhớ cache của máy khách khỏi máy chủ –