Tôi đang tham khảo cuối cùng về mã ASP.NET được yêu cầu để tắt các trình duyệt khỏi bộ nhớ đệm của trang. Có nhiều cách để ảnh hưởng đến tiêu đề HTTP và thẻ meta và tôi nhận thấy rằng các cài đặt khác nhau được yêu cầu để các trình duyệt khác nhau hoạt động chính xác. Sẽ thực sự tuyệt vời nếu nhận được một đoạn mã tham chiếu được nhận xét để chỉ ra cái nào hoạt động cho tất cả các trình duyệt và cái nào là bắt buộc đối với trình duyệt cụ thể, bao gồm cả các phiên bản.
Có một lượng lớn thông tin về vấn đề này ở đó nhưng tôi vẫn chưa tìm thấy tài liệu tham khảo tốt mô tả lợi ích của từng phương pháp và liệu một kỹ thuật cụ thể có được thay thế bằng API cấp cao hơn hay không.
Tôi đặc biệt quan tâm đến ASP.NET 3.5 SP1 nhưng sẽ rất tốt nếu bạn nhận được câu trả lời cho phiên bản trước đó.
Mục blog này Hai điểm khác biệt quan trọng giữa Firefox và IE Caching mô tả một số khác biệt về hành vi giao thức HTTP.
Đoạn mã mẫu sau đây minh họa loại điều tôi quan tâm
public abstract class NoCacheBasePage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DisableClientCaching();
}
private void DisableClientCaching()
{
// Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
// HTTP Headers or both?
// Does this only work for IE?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Is this required for FireFox? Would be good to do this without magic strings.
// Won't it overwrite the previous setting
Response.Headers.Add("Cache-Control", "no-cache, no-store");
// Why is it necessary to explicitly call SetExpires. Presume it is still better than calling
// Response.Headers.Add( directly
Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-1));
}
}