image.png

 

需要統計的頁面都導入js統計代碼,根據要統計的信息訪問統計服務器api地址

要統計的內容舉例:

image.png

(ip什么的就不上報了,交給nginx)

然而真實的統計代碼是要做容錯處理的,比如說一個頁面套一個頁面的時候會不會統計兩次,要不要加全局鎖,防止調用一次以后再調用統計多次的問題......

 

nginx並發性能很強勁,所以選用它

 

Nginx的405錯誤

絕大多數服務器,都不允許靜態文件響應POST請求(GET請求靜態文件是天經地義的),否則會返回HTTP/1.1 405 Method not allowed錯誤。

然而在前端開發中,前端開發工程師經常模擬后端請求,返回靜態數據來查看頁面效果,怎么辦?

目前有兩種方案解決:

方案一:修改配置文件nginx.conf(推薦)


在nginx.conf中,請求的靜態數據路徑中,添加如下語句error_page 405=200 $request_uri

location ~ \.(action|jsp) {
    root $testDataFold;
    error_page 405 =200 $request_uri;
}

方案二:修改nginx源碼編譯


找到文件ngx_http_static_module.c,然后找到下面代碼並注釋掉。

if (r->method & NGX_HTTP_POST) {
    return NGX_HTTP_NOT_ALLOWED;
}

然后按照原來的編譯參數,重新編譯安裝nginx即可。

推薦方案一,簡單方便無副作用,^_^。

 


 

nginx.conf中按照方案一配置:

    #打點服務器配置(url訪問dig,顯示一個1*1像素的gif圖片)

    location = /dig {

        empty_gif;

        #絕大多數服務器,都不允許靜態文件響應post請求(get請求靜態文件是天經地義的),否則會返回HTTP/1.1 405 Method not allowed錯誤,然而在前端開發中,前端開發工程師經常模擬后端請求,返回靜態數據來查看頁面效果,怎么辦?這樣咯:

        error_page 405 =200 $request_uri;

    }

 

訪問localhost/dig:

image.png

(顯示一個1*1像素的gif圖片)

 

注意:同時要打開access_log保存訪問記錄、日志格式:

http {

    include       mime.types;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"'; (日志的格式)

    access_log  logs/access.log  main;

 

以及一些nginx性能調優,可以根據機器的軟硬件配置來調整:

image.png

gzip內置字典,重復越多,壓縮越好。gzip在傳輸的內容多的時候可以開啟節省傳輸數據大小,但在傳輸少量內容的時候反而沒多少用,還浪費cpu性能。

 

問題:

    問:為什么要用empty_gif來做接收返回響應?

    答:常識是要發送給api接口,返回json、狀態碼等。然而只要是json就是一長串的字符,在高並發的項目中,在高峰期壓力非常高,它要接收請求返回json,很難構造很小的響應。而且,打點服務器只要上報,不要返回(完全不返回也不行,三次握手需要response),所以用empty_gif來做極小的response。

©著作權歸作者所有:來自51CTO博客作者梁十八的原創作品,如需轉載,請注明出處,否則將追究法律責任