2009-11-24 32 views
7

Tôi đã có trang mà tôi muốn lưu vào bộ nhớ cache bằng cách sử dụng chỉ thị OutputCache. Tuy nhiên, tôi đang sử dụng mô-đun ghi đè URL để hướng nhiều URL tại trang này, mỗi URL có nội dung khác nhau.Thay đổi OutputCache dựa trên URL

Có cách nào để sử dụng bộ nhớ cache đầu ra cho mỗi URL không? Không có tiêu chí nào khác mà tôi cần thay đổi kết quả bộ nhớ cache.

Trả lời

10

Cuối cùng này là khá đơn giản để sửa chữa.

  1. Thêm chỉ thị sau đây để trang mà cần phải được lưu trữ:

    <% @ OutputCache thời gian = "600" vị trí = "Downstream" varybyparam = "none" varybycustom = "RawURL" %>

  2. Thêm phương pháp này để các tập tin global.asax

    public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
        switch (custom.ToUpper()) 
        { 
         case "RAWURL": 
          return context.Request.RawUrl; 
    
         default: 
          return ""; 
        } 
    } 
    
+0

Đây là thông minh ... nhưng nó vẫn trả lại 200 thay vì 304 (Không được sửa đổi) vì nó sẽ có URL không được định tuyến. Vì vậy, mặc dù nó có thể không * tạo ra * trang một lần nữa, khách hàng vẫn phải * nhận lại * nó, thay vì sử dụng bộ đệm ẩn cục bộ của nó. Tuy nhiên, câu hỏi hay. – harpo

0

Có lập trình, bạn có thể đặt tùy chọn Bộ nhớ đệm bằng cách sử dụng Response.Cache. Bạn có thể bật biến truy vấn và tùy thuộc vào từng trường hợp, đặt thuộc tính trên Response.Cache một cách thích hợp.

MSDN on Cache object
Another helpful article from aspalliance.com

+0

tôi cũng có thể thay đổi cac ông dựa trên các tiêu đề yêu cầu, nhưng không thay đổi và không có biến truy vấn được sử dụng – Blatfrig

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