Thanh toán shutils.rmtree() hoặc os.removedirs(). Tôi nghĩ rằng đầu tiên có lẽ là những gì bạn muốn.
Cập nhật dựa trên một số nhận xét: Trên thực tế, cơ chế bộ nhớ đệm Django tổng quát hơn và mịn hơn chỉ sử dụng path
cho khóa (mặc dù bạn có thể sử dụng ở cấp đó). Chúng tôi có một số trang có 7 hoặc 8 thành phần phụ được lưu trong bộ nhớ cache riêng biệt hết hạn dựa trên một loạt các tiêu chí. Tên bộ nhớ cache thành phần của chúng tôi phản ánh các đối tượng chính (hoặc các lớp đối tượng) và được sử dụng để xác định những gì cần phải được vô hiệu hóa trên các bản cập nhật nhất định.
Tất cả các trang của chúng tôi đều có khóa bộ nhớ cache tổng thể dựa trên trạng thái thành viên/không phải thành viên, nhưng đó chỉ là khoảng 95% của trang. 5% còn lại có thể thay đổi trên cơ sở từng thành viên và do đó không được lưu vào bộ nhớ cache.
Cách bạn lặp qua bộ nhớ cache để tìm các mục không hợp lệ là một chức năng của cách nó được lưu trữ thực sự. Nếu đó là các tập tin bạn có thể sử dụng chỉ đơn giản là globs và/hoặc thư mục đệ quy xóa, nếu đó là một số cơ chế khác thì bạn sẽ phải sử dụng cái gì khác.
Câu trả lời của tôi và một số nhận xét của người khác, là cố gắng nói rằng cách bạn hoàn thành việc vô hiệu hóa bộ nhớ cache được liên kết chặt chẽ với cách bạn đang sử dụng/lưu trữ bộ nhớ cache.
Cập nhật thứ hai: @andybak: Vì vậy, tôi đoán nhận xét của bạn có nghĩa là tất cả các trang web Django thương mại của tôi sẽ phát nổ trong ngọn lửa? Cảm ơn những người đứng đầu về điều đó. Tôi nhận thấy bạn không cố gắng trả lời cho vấn đề.
Vấn đề của Knipknap là anh ta có một nhóm các mục trong bộ nhớ cache xuất hiện để liên quan và phân cấp vì tên của chúng, nhưng logic thế hệ khóa của cơ chế bộ nhớ cache xóa tên đó bằng cách tạo băm MD5 đường dẫn + vary_on. Vì không có dấu vết của đường dẫn/tham số ban đầu, bạn sẽ phải đoán toàn bộ tất cả các kết hợp đường dẫn/thông số có thể có, hy vọng bạn có thể tìm thấy nhóm phù hợp. Tôi có sở thích khác thú vị hơn.
Nếu bạn muốn để có thể tìm thấy nhóm các mặt hàng lưu trữ dựa trên một số sự kết hợp của đường dẫn và/hoặc các giá trị tham số bạn phím phải hoặc sử dụng bộ nhớ cache có thể được mô hình phù hợp trực tiếp hoặc một số hệ thống mà vẫn giữ được thông tin này để sử dụng vào thời gian tìm kiếm.
Vì chúng tôi có nhu cầu không liên quan đến vấn đề của OP, chúng tôi đã kiểm soát bộ đệm mẫu của bộ nhớ mẫu - và tạo ra khóa đặc biệt - cách đây hơn 2 năm. Nó cho phép chúng ta sử dụng regexps theo một số cách để vô hiệu hóa các nhóm các mục có liên quan trong bộ nhớ đệm.Chúng tôi cũng đã thêm thời gian chờ mặc định và các tên biến khác nhau (được giải quyết tại thời gian chạy) được định cấu hình trong settings.py
, đã thay đổi thứ tự thời gian chờ tên là & vì không cần phải ghi đè thời gian chờ mặc định để đặt tên cho đoạn. resolvable (nghĩa là nó có thể là một biến) để làm việc tốt hơn với lược đồ kế thừa mẫu đa cấp và một vài thứ khác.
Lý do duy nhất cho câu trả lời ban đầu của tôi, điều này thực sự sai đối với Django hiện tại, là vì tôi đã sử dụng các khóa bộ đệm của saner quá lâu nên tôi đã quên mất cơ chế đơn giản mà chúng tôi đã bỏ đi.
Tôi không chắc chắn Nếu tôi hiểu câu hỏi của bạn đúng, Bạn có nghĩa là bạn muốn xóa tất cả bộ nhớ cache mong đợi một với id "123"? – Prashanth
Tôi muốn xóa bộ nhớ cache cho bất kỳ đường dẫn nào bắt đầu bằng '/ graph/123 /'. – knipknap
Tôi không hiểu tại sao bạn lại lo lắng về một con đường? – Prashanth