2009-08-25 36 views
5

Chúng tôi đang thử nghiệm thêm dấu thời gian vào một số URL để cho phép mọi thứ bộ nhớ cache nhưng làm mới chúng khi chúng thay đổi. Chúng tôi có mã tóm tắt điều này:Giá trị đọc tập tin đắt bao nhiêu? .NET

DateTime ts = File.GetLastWriteTime(absPath); 

trong đó absPath là một MappedPath của url. Vì vậy, máy chủ web sẽ kiểm tra thời gian ghi cuối cùng của tập tin này mỗi lần chúng tôi phục vụ một liên kết đến tệp. Kinda cho tôi ý chí - phải không?

Trả lời

7

Bạn nên kiểm tra hiệu suất, nhưng tôi không nghi ngờ nó đắt hơn kiểm tra sự tồn tại của tệp (ví dụ: chỉ đọc) và chắc chắn ít tốn kém hơn so với việc mở tệp.

Nếu (sau khi kiểm tra), bạn quyết định rằng đó là sự cố, bạn cũng có thể lưu lại các cuộc gọi của mình tới GetLastWriteTime (ví dụ: không gọi quá 5 giây một lần cho bất kỳ tệp cụ thể nào).

Ngoài ra, tôi chưa bao giờ sử dụng nó nhưng nếu lưu vào bộ nhớ đệm là một mối quan ngại, tôi hy vọng bạn đã xem xét việc ủy ​​quyền triển khai cho một số chuyên gia như Squid thay vì tự mình thực hiện.

0

Nó sẽ phát sinh thêm I/O đĩa nhỏ khi liên kết được tạo. Nếu bạn tạo nhiều URL trong một khoảng thời gian ngắn, đây có thể là một nút cổ chai. Noone có thể nói chắc chắn nếu điều này sẽ tác động đến kịch bản của bạn - bạn thực sự cần phải đo lường và xem liệu đây có phải là một vấn đề hay không.

0

Hoặc nếu bạn lo lắng về điều đó, tại sao không lưu bộ nhớ cache trong một phút?

1

Về cơ bản, có ba câu trả lời cho câu hỏi của bạn về "đắt tiền như thế nào?".

  1. Quá đắt - bạn đã thử nghiệm và điều gì đó phải thay đổi để hệ thống có thể sử dụng được.
  2. Có thể chấp nhận - bạn đã thử nghiệm và không tuyệt vời, nhưng đủ nhanh để sử dụng
  3. Khá rẻ - bạn đã thử nghiệm và không có tác động đáng kể đến hiệu suất.

Chúng tôi thực sự không thể trả lời câu hỏi cho bạn, vì vậy bạn sẽ chỉ phải dùng thử. Nếu bạn quyết định rằng nó quá đắt hoặc đáng để bạn chuyển nó từ chấp nhận được sang giá rẻ, hãy thay đổi câu hỏi để hỏi làm thế nào để tăng tốc độ.

2

Tôi chưa thử điều này, nhưng câu hỏi của bạn có liên quan đến một tình huống mà tôi đã suy nghĩ.

Bạn không cho biết dữ liệu nào đang thay đổi? cơ sở dữ liệu, dữ liệu xml, v.v.

Bộ đệm ẩn ASP.NET hỗ trợ cập nhật bộ nhớ cache dựa trên nhiều phụ thuộc khác nhau.

Xem bài viết này trong các phần phụ thuộc dựa trên tệp, phụ thuộc dựa trên thời gian, và phụ thuộc dựa trên khóa.

"Phụ thuộc cho phép chúng tôi vô hiệu hóa một mục cụ thể trong Cache dựa trên các thay đổi đối với tệp, thay đổi các khóa bộ nhớ cache khác hoặc tại một thời điểm cố định. Hãy xem từng phụ thuộc này."

Dưới đây là bài viết:

http://msdn.microsoft.com/en-us/library/ms972379.aspx

Cảm ơn

Joe

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