Để chỉ cần thêm tiêu đề vào phản hồi, bạn có thể sử dụng Bộ lọc after
.
// grails-app/conf/MyFilters.groovy
class MyFilters {
def filters = {
addHeader(uri: '/*') {
after = {
response.setHeader('X-Time', value)
}
}
}
}
Edit:
Để thực sự tính toán thời điểm đó, nó muốn có lẽ là thích hợp hơn để sử dụng một javax.servlet.Filter
thay vì một bộ lọc Grails.
src/groovy/com/example/myproject/MyFilter.groovy
package com.example.myproject
import javax.servlet.*
class MyFilter implements Filter {
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
def start = System.currentTimeMillis()
chain.doFilter(request, response)
def elapsed = System.currentTimeMillis() - start
response.setHeader('X-Time', elapsed as String)
}
void init(FilterConfig config) { }
void destroy() { }
}
src/templates/chiến tranh/web.xml (grails chạy cài đặt-templates nếu src/templates isn' t đã có trong cây nguồn của bạn)
<filter>
<filter-name>timer</filter-name>
<filter-class>com.example.myproject.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>timer</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
lý do cho việc sử dụng javax.servlet.Filter
là, do đó bạn không cần phải tách ra của bạn "trước" và "sau khi" hành động, và có thể therefor e giữ thời gian bắt đầu trong toàn bộ chuỗi lọc & thực hiện servlet.
lưu ý bổ sung:
Đối với tôi, nó có vẻ xa lạ đối với muốn quay trở lại máy chủ trôi qua thời gian thực hiện như một phản ứng tiêu đề. Có lẽ bạn có lý do chính đáng để làm điều đó, nhưng trong hầu hết các trường hợp tôi muốn A) hoặc quan tâm nhiều hơn đến tổng thời gian khứ hồi (như được quan sát bởi khách hàng), hoặc B) ghi nhật ký thời gian thực hiện trên máy chủ của tôi mục đích quản trị/số liệu hệ thống của riêng mình.
Nguồn
2011-06-20 18:16:18
Một ứng dụng hữu ích của việc này là xử lý ['X-UA-Tương thích'' http-equiv'] (https://groups.google.com/forum/?fromgroups=#!topic/html5boilerplate/bRtrFSrKjtI) meta các thẻ được sử dụng để đặt phiên bản trình kết xuất đồ hoạ hoặc chromeframe của IE, đặc biệt là bởi dự án HTML5 Boilerplate. – cdeszaq