前端領域流行的js版本控制方法,以及他們之間的區別?

目前在寫一份使用gulp的前端自動化構建,在靜態資源js,css的版本控制上有一些疑問。

查詢了網上的做法,發現有二種版本控制的方法,

第一種:

&


這個叫做 static assets revisioning ,並不只是針對js,而是針對所有靜態文件都可以做。

雖然有個 revision ,但實際上目的並不是版本控制,而是避免代理/CDN/瀏覽器緩存造成的不利影響。你伺服器文件內容變掉了,但由於緩存的原因,用戶端看到的文件沒變,這樣是不好滴,為了解決這個問題,可以把 url 也改掉,這樣用戶也不用清緩存,開發者也不用手動去清除 cdn 緩存,多開心。

第一種方式有缺點,尤其是使用 cdn 的場景下,很容易造成 cdn 各節點文件內容不一致,一般採用第二種方式。

第二種方式,文件名里多加的一串字元,一般是取文件內容 hash 值的一部分或全部。

很多 PHP 框架自帶這個功能,比如 Yii,但是前端在上線的過程中也可以用 git hook / gulp 腳本等方式手動/自動 給文件名加revision 。


第一種方式:

先部署頁面,則訪問者會請求並緩存舊的腳本,頁面錯亂,再部署新腳本也沒有用了

先部署腳本,有緩存的訪問者頁面不變,等部署了新頁面,統一更新。沒有緩存的訪問者會用舊頁面載入新腳本,頁面錯亂,再部署新頁面,恢復正常。

第二種方式:

先把新腳本文件上傳,不會覆蓋舊腳本,然後再部署頁面。訪問者無論有沒有緩存,頁面統一更新正常。

參考:

大公司里怎樣開發和部署前端代碼? - 張雲龍的回答


用fis3吧


推薦閱讀:

Expressjs 生成的NodeJS網站,用「npm start」可以啟動訪問,forever 或者 pm2 可以啟動,但是無法訪問?
前端開發中的一些框架,插件,git使用真的很重要麼?
如何在docker里部署nodejs?
Node.js新手在哪兒找小項目練手?
前端小白迷茫,求指導?

TAG:前端開發 | Nodejs | 版本控制 | gulp |