Monday, November 24, 2014

How Nginx computes the ETag header for files.

Curious how the ETag: header is generated in Nginx?

Turns out it's a combination of the last modified time and the content length:
etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
                                  r->headers_out.last_modified_time,
                                  r->headers_out.content_length_n)
                      - etag->value.data;

You can determine the last modified time in hex by using this Unix line:
printf "%x" $(stat -c%Y <file>)

The content length is determined here:
stat --format="%s" <file>

2 comments:

  1. đồng tâm
    game mu
    cho thuê nhà trọ
    cho thuê phòng trọ
    nhac san cuc manh
    số điện thoại tư vấn pháp luật miễn phí
    văn phòng luật
    tổng đài tư vấn pháp luật
    dịch vụ thành lập công ty trọn gói

    Lý Kiếm Ngân nhất thời giống như bị kiềm hãm, cảm thấy buồn nôn. Mà Ô Thiên Thiến ở một bên thì không nhịn được phì cười. Tuy nàng đã cố nhịn xuống, nhưng đôi mắt phượng thì cũng mở to như trăng rằm...

    - Ngươi muốn chết!
    Lý Kiếm Ngân giận đến phát điên, đột nhiên rút kiếm:
    - Rút kiếm của ngươi ra! Ta muốn đấu kiếm với ngươi!

    Bị người vũ nhục ngay trước mặt người phụ nữ mình yêu, Lý Kiếm Ngân làm sao mà không phát điên cho được?

    - Thôi! Không cần đấu đâu, ta thừa nhận...
    Sở Dương nói nghiêm túc:
    - Ta không tiện bằng ngươi.

    Ngay sau đó hắn lại bỏ vào thêm một câu:
    - Cái đó... thực sự là không bằng ngươi mà...

    Ô Thiên Thiến lúc này cũng không nhịn được nữa mà cười lên thành tiếng. Nhưng vừa cười nàng đã thấy không ổn, hai người này vốn đã đối chọi gay gắt, nàng cười chẳng phải là đổ thêm dầu vào lửa sao?

    ReplyDelete
  2. Our Animal Science Essay Writing Services provides custom papers that will earn you the highest of grades because students can easily become frustrated trying to meet deadlines. Seek our Animal Science Research Writing Services today. You can also get Top Writing Services Online at affordable cost.

    ReplyDelete