Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix
Kiểm tra thời gian hết hạn của cookie hoặc bộ đệm trước khi bạn gửi nó
· Tại sao nó quan trọng
dấu thời gian gỡ lỗi web-development
Các giá trị hết hạn được tính toán, hiếm khi được đọc và sai theo những cách mà chỉ hiển thị sau này. Bài đăng này liệt kê các địa điểm xuất hiện các kỷ nguyên tuyệt đối (Redis, memcached, URL đã ký, cookie) và cho biết cách xác minh một kỷ nguyên trước khi nó được đưa vào sản xuất.
Bộ đệm đã hết hạn ngay lập tức — thời hạn được tính toán được ghi sai đơn vị và tỷ lệ truy cập giảm xuống 0
Tỷ lệ truy cập bộ đệm giảm ngay sau khi triển khai có thể đến từ thời điểm hết hạn được tính toán sai quy mô. Bộ đệm đang hoạt động chính xác khi nó nhận được một thập kỷ tức thời trong quá khứ. Trước khi điều chỉnh bộ nhớ hoặc trục xuất, hãy kiểm tra con số chính xác được gửi bởi đường dẫn triển khai.
So sánh nó với thời gian triển khai và thời gian dự định. ToolAcre có thể hiển thị rõ ràng giây và mili giây, làm cho hệ số 1,000 không khớp hiển thị. Giữ lệnh hoặc cấu hình thô bên cạnh kết quả; thay thế giá trị trong quá trình sản xuất theo cách thủ công mà không sửa chữa phép tính đảm bảo sự lặp lại.
Kiểm tra xem các mục nhập không thành công có được tạo bằng bản phát hành mới trong khi các mục cũ hơn vẫn xuất hiện hay không. Mối tương quan đó có thể tách biệt việc tính toán thời hạn sử dụng khỏi áp lực trục xuất không liên quan.
Nơi xuất hiện thời hạn tuyệt đối — Redis EXPIREAT so với PEXPIREAT, quy tắc ba mươi ngày của memcached, thông số hết hạn URL đã ký và thuộc tính cookie Hết hạn
Ngày hết hạn tuyệt đối xuất hiện trong nhiều hệ thống, nhưng đơn vị và quy tắc biên của chúng không thể thay thế cho nhau. Sổ làm việc liệt kê một số sản phẩm được đặt tên; kho lưu trữ dấu thời gian không triển khai hoặc ghi lại các giao thức của họ. Xác minh từng lệnh, tham số truy vấn hoặc thuộc tính bằng hợp đồng có thẩm quyền của nó trước khi áp dụng kỷ nguyên.
Chẩn đoán được chia sẻ vẫn hợp lệ: nắm bắt nội dung đã được gửi, xác định xem nó có đặt tên cho tức thời hay không, nêu đơn vị của nó và chuyển đổi nó. Tránh chuyển quy tắc từ lệnh bộ đệm này sang lệnh bộ đệm khác vì tên của chúng trông giống nhau. Ngày được chuyển đổi chính xác vẫn có thể không hợp lệ đối với mục tiêu API.
API hết hạn tuyệt đối khác nhau; xác minh cửa hàng cụ thể, người ký URL hoặc hợp đồng cookie
Người thân TTL trả lời “bao lâu kể từ khi phẫu thuật?” trong khi một kỷ nguyên tuyệt đối trả lời “vào thời điểm nào?” Việc thêm TTL vào thời điểm hiện tại sẽ tạo ra một giá trị tuyệt đối; việc gửi TTL ban đầu đến một trường tuyệt đối sẽ đặt nó gần kỷ nguyên. Gửi số lượng tuyệt đối đến một trường tương đối có thể lưu giữ dữ liệu lâu hơn dự định.
Đặt tên các biến theo ngữ nghĩa của chúng, chẳng hạn như `ttlSeconds` và `expiresAtMs`, đồng thời chuyển đổi tại địa điểm cuộc gọi có hợp đồng đã biết. Các thử nghiệm sẽ đóng băng đồng hồ tham chiếu để thời hạn sử dụng dự kiến mang tính quyết định. Tránh chỉ khẳng định rằng kết quả lớn hơn hiện tại; có thể vượt qua các giá trị với thời gian tồn tại cực kỳ sai lầm.
Bẫy múi giờ khi hết hạn — thời hạn có nghĩa là 'nửa đêm' được tính trong vùng của máy chủ chứ không phải vùng của người dùng hoặc UTC
“Hết hạn lúc nửa đêm” chưa hoàn thành cho đến khi khu vực nửa đêm được đặt tên. Nửa đêm UTC, giờ địa phương của máy chủ và nửa đêm địa phương của người dùng có thể là các thời điểm khác nhau và thậm chí là các ngày theo lịch khác nhau. Bộ chọn ngày giờ của ToolAcre coi ngày giờ không có vùng là giờ địa phương của trình duyệt và nói như vậy.
Khi cơ sở hạ tầng hết hạn, ngày giờ UTC rõ ràng thường loại bỏ sự phụ thuộc vào môi trường. Đối với chính sách người dùng, hãy giữ lại vùng được đặt tên dự kiến trong lớp lập kế hoạch trước khi giải quyết ngay lập tức. Trình chuyển đổi có thể kiểm tra kỷ nguyên đã được giải quyết, nhưng nó không chọn yêu cầu có nghĩa là nửa đêm.
Lưu trữ cụm từ chính sách và phần tức thời đã được giải quyết riêng biệt trong quá trình gỡ lỗi. Điều đó cho thấy liệu sự bất đồng bắt đầu từ việc giải thích yêu cầu hay trong số học kỷ nguyên tiếp theo.
“Nửa đêm” cần được giải thích rõ ràng trước khi nó hết hạn ngay lập tức
Hãy tưởng tượng một bản phát hành tại `2025-02-03T10:30:00Z` sẽ hết hạn đúng một ngày sau đó. Giá trị tuyệt đối dự kiến là 1,738,668,600 giây hoặc 1,738,668,600,000 mili giây, mang lại `2025-02-04T10:30:00.000Z`. Chuyển đổi đầu ra của tập lệnh theo đơn vị được khai báo và so sánh.
Giá trị 86,400 trong trường giây tuyệt đối sẽ hiển thị dưới dạng 1970-01-02, cho biết rằng thời lượng đã được gửi mà không thêm thời điểm phát hành. Giá trị nhân hai lần với 1,000 có thể nằm ngoài Phạm vi ngày. Cả hai lỗi đều mang lại nhiều thông tin hơn chỉ số chung chung về "bộ nhớ đệm bị thiếu".
Đồng bằng kéo dài cả ngày có thể được xác nhận trực tiếp là 86,400 giây. Việc kiểm tra thời lượng này vẫn ổn định ngay cả khi kết xuất cục bộ của người đánh giá khác với lịch triển khai UTC.
Ví dụ đã hoạt động: kiểm tra thời hạn tuyệt đối từ tập lệnh triển khai
Trước khi hợp nhất, hãy hiển thị giá trị được tính toán trong thử nghiệm đơn vị hoặc đầu ra chạy thử và kiểm tra giá trị đó dưới dạng ngày. Đồng thời trừ đi thời điểm tham chiếu đã biết để xác nhận thời gian tồn tại dự kiến. Hai cuộc kiểm tra này phát hiện những lỗi khác nhau: ngày hợp lý vào sai tháng và ngày chính xác đạt được nhờ các giả định cục bộ dễ vỡ.
Sử dụng đồ đạc cố định thay vì đồng hồ treo tường trong các khẳng định. Sau đó kiểm tra ranh giới tuần tự hóa thực để giá trị giây không được khách hàng chuyển đổi lại. ToolAcre đóng vai trò là cơ quan kiểm tra độc lập của con người chứ không phải cơ chế bảo vệ tự động duy nhất.
Điều này không bao gồm những gì - định dạng HTTP ngày cho tiêu đề Hết hạn, sử dụng định dạng văn bản thay vì kỷ nguyên
Một số giao diện hết hạn sử dụng định dạng ngày văn bản thay vì kỷ nguyên. Kho lưu trữ này tạo ISO để hiển thị và phân tích dữ liệu đầu vào tương thích với Ngày, nhưng nó không tạo ra ngày tiêu đề dành riêng cho giao thức. Một số được chuyển đổi chính xác không chứng minh được tiêu đề văn bản có nhãn ngữ pháp hoặc vùng được yêu cầu.
Giữ định dạng trong một bộ chuyển đổi chuyên dụng đã được thử nghiệm cho giao thức đó. Không dán chuỗi người vào trường số hoặc cho rằng đầu ra ISO có thể thay thế mọi định dạng dây. Thời điểm hết hạn và số sê-ri của nó là các lớp riêng biệt và mỗi lớp đều xứng đáng được kiểm tra hợp đồng riêng.
Các định dạng hết hạn bằng văn bản là các hợp đồng riêng biệt với các kỷ nguyên số
Mỗi ngày hết hạn tuyệt đối phải được đọc một lần dưới dạng ngày của con người trước khi phát hành. Quá trình kiểm tra ngắn gọn đó sẽ phát hiện các lỗi diễn giải đơn vị, thời lượng so với tức thời và nửa đêm trong khi mã vẫn có thể xem lại được. Nó cũng tạo ra kết quả mong đợi cụ thể cho các thử nghiệm hồi quy.
Sử dụng trình chuyển đổi với đơn vị mục tiêu rõ ràng, so sánh UTC với chính sách và sửa phép tính thay vì triệu chứng được lưu trữ. Thời hạn sử dụng có thể đọc được không phải là bằng chứng đầy đủ về tính chính xác của target-API, nhưng thời hạn sử dụng không thể đọc được sẽ không bao giờ được đưa vào sản xuất mà không được chú ý.
Đính kèm tức thì ISO dự kiến vào bản đánh giá thay đổi nhưng vẫn giữ nguyên số xác nhận có thể thực thi được. Sau đó, sự đánh giá của con người và sự hồi quy của máy sẽ bảo vệ các phần bổ sung của ranh giới.