客戶端在請求一個文件的時候,發現本身緩存的文件有 Last Modified ,那麼在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。所以,若是請求中包含 If Modified Since,就說明已經有緩存在客戶端。服務端只要判斷這個時間和當前請求的文件的修改時間就能夠肯定是返回 304 仍是 200 。
所以,對於動態頁面作緩存加速,首先要在 Response 的 HTTP Header 中增長 Last Modified 定義,其次根據 Request 中的 If Modified Since 和被請求內容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經作了一次數據庫查詢,可是能夠避免接下來更多的數據庫查詢,而且沒有返回頁面內容而只是一個 HTTP Header,從而大大的下降帶寬的消耗,對於用戶的感受也是提升。當這些緩存有效的時候,經過 Fiddler 或HttpWatch 查看一個請求會獲得這樣的結果:數據庫
第一次訪問 200 按F5刷新(第二次訪問) 304 按Ctrl+F5強制刷新 200
var reg=/^\d{5,10}$/; //d表示任意字符
先數組去重,再將重複的字符做爲參數傳入函數,與數組中的字符進行比較,相同則+1
數組去重:數組
Array.prototype.distinct = function (){ var arr = this, i, obj = {}, result = [], len = arr.length; for(i = 0; i< arr.length; i++){ if(!obj[arr[i]]){ //若是能查找到,證實數組元素重複了 obj[arr[i]] = 1; result.push(arr[i]); } } return result; };