Làm cách nào để định cấu hình máy chủ apache hoặc nginx để gửi tiêu đề Etag bằng thuật toán tôi chọn (tức là không liên quan đến inode, mtime hoặc size)? Có cách nào khác để biên dịch mô-đun C mới không?Tạo etag tùy chỉnh
7
A
Trả lời
4
Trong Apache, ETags are handled as a core feature. ETag được tính như một giá trị băm của một vài giá trị. Bạn có thể sử dụng các chỉ thị FileETag
tại của bạn tập tin httpd.conf
hoặc .htaccess
để xác định hành vi có điều kiện mà các giá trị đưa vào băm, nhưng khi bạn chỉ ra, lựa chọn của bạn được giới hạn:
INode
- i-node của tập tin của bạn số trên máy chủ cụ thể nó phục vụ từMTime
- dấu thời gian (trong millis) của máy chủ tập tin của bạn được phục vụ từSize
- kích thước của tập tin của bạn bằng byteAll
- một ll những điều trênNone
- không có ở trên
Nếu bạn muốn thế hệ ETag thực sự tùy chỉnh, bạn chắc chắn sẽ được giảm giá tốt nhất viết một module Apache. Tuy nhiên, nếu bạn cần sửa chữa nhanh chóng và bẩn, bạn có thể tạo thẻ của riêng mình bằng cách định tuyến các yêu cầu của bạn tới tập lệnh PHP và thêm tiêu đề Etag
vào tập lệnh. Các tuyến đường có thể trông như thế này trong httpd.conf
hoặc .htaccess
bạn file:
RewriteCond %{REQUEST_FILENAME} \.png$ # This example looks for .png requests
RewriteRule ^(.*)$ /gentag.php?path=$1 [B] # ...and routes them to a PHP script
Các kịch bản PHP có thể trông như thế này:
<?
$path = $_GET['path']; // Grab the filepath from GET params
$cont = file_get_contents($path); // Get file contents to hash
$hash = crc32($cont); // Create your own ETag hash however you like
header("Etag: $hash"); // Send the custom Etag header
echo $cont; // Dump the file contents to output
?>
Các vấn đề liên quan
- 1. HTTP: Tạo tiêu đề ETAG
- 2. Tạo thẻ tùy chỉnh
- 3. Tạo JSONEncoder tùy chỉnh
- 4. Tạo thuộc tính có thể tùy chỉnh tùy chỉnh
- 5. Izpack: Tạo bảng tùy chỉnh
- 6. Tạo một OnClickListener tùy chỉnh
- 7. Cách tạo TextView tùy chỉnh?
- 8. Tạo chuỗi lớp tùy chỉnh
- 9. SNMP: Tạo OID tùy chỉnh
- 10. Cách tạo JVM tùy chỉnh?
- 11. Tạo chú thích tùy chỉnh
- 12. Tạo hai nút tùy chỉnh
- 13. Tạo hàm XSLT tùy chỉnh
- 14. Tạo một Etag dựa trên cơ thể trong mod_perl
- 15. Tại sao tạo ngoại lệ tùy chỉnh?
- 16. Cách tạo thành phần Swing tùy chỉnh
- 17. Java - Cách tạo hộp thoại tùy chỉnh?
- 18. Tạo văn hóa tùy chỉnh trong ASP.NET
- 19. WTForms tạo một widget tùy chỉnh
- 20. Tạo tùy chỉnh UITableViewCell trong một Storyboard
- 21. Tạo vòng lặp WooCommerce tùy chỉnh
- 22. ScrollView tạo bố cục tùy chỉnh ẩn
- 23. Symfony2 & Doctrine2: Tạo chú thích tùy chỉnh
- 24. Android tạo tùy chỉnh menu tràn
- 25. Gọi hàm tạo tùy chỉnh bằng Dapper?
- 26. tạo nút xóa tùy chỉnh cho uitableview
- 27. Symfony2 & Doctrine: Tạo SQL-Query tùy chỉnh
- 28. Log4net tạo mức độ tùy chỉnh
- 29. Tạo điều khiển SSRS tùy chỉnh
- 30. Tạo một tùy chỉnh Toast fullscreen
Bạn đã có một trường hợp sử dụng khi bạn cần phải thiết lập riêng 'ETag' cho tệp tĩnh? –
Phục vụ từ một cụm - inode và mtime sẽ không giống nhau cho cùng một phiên bản, kích thước có thể giống nhau cho các phiên bản khác nhau – OrangeDog
Nginx đã tích hợp sẵn Perl, điều này có vẻ là một công việc tốt cho nó. Nó hoạt động rất tốt (đáng tin cậy và nhanh chóng) trong các tình huống khi bạn không có khóa trên tài nguyên từ xa (ví dụ: cơ sở dữ liệu). –