專案上線一段時間後如果更新js或
css檔案,而客戶端已經對該檔案快取過了,那就有可能會無法及時更新而繼續採用舊的js或
css檔案,無法達到想要的效果。
二:通過query的方式新增時間戳或者版本號
這種解決方案很是直觀,每次更新只需要更新相關的靜態資源和頁面,做到了區域性更新,減輕了伺服器負擔,同時也使得瀏覽器快取得到了有效利用。
但是,如果是訪問量比較大的**的話,還是會面臨一些新的問題的。
通常,發布新版本也就是發布新的靜態資源和頁面的過程。比如:要發布乙個index.aspx的頁面,同時引入了
index.js
的資源。發布新版本就是要覆蓋伺服器上的這兩個檔案,不管你怎麼操作,這兩個檔案在覆蓋的過程中總會產生時間間隙的,對於訪問量
大的**,在這個時間間隙內有可能是會出現新的使用者訪問的,這時,錯誤就發生了,新頁面舊的靜態資源或者舊頁面新的靜態資源。由於靜態資源是覆蓋發布,對於使用cdn快取的**來說還有可能面臨
cdn快取攻擊。
三:基於檔案內容的hash版本冗餘機制,也就是直接修改檔案的
url,而不是在其後新增
query
其中」_a5dae5b」字元是根據
index.js
的檔案內容進行
hash
運算得到的,只有檔案內容發生變化了才會有更改。
由於不是同名覆蓋,這樣就完美的解決了發布的間隙問題,可以做到無縫連線;同時遇到問題回滾的時候只需要回滾頁面就可以了。
執行node-v6.11.4-x64安裝檔案安裝node和
npm執行cmd命令,執行以下安裝命令安裝
fis3
npminstall-gfis3
安裝完成後執行 fis3 -v 判斷是否安裝成功,如果安裝成功,則顯示類似如下資訊:
1.編寫發布指令碼
fis3的發布指令碼為乙個
js指令碼,用來控制執行發布命令時
fis3
所做的操作。發布指令碼需要放到待發布**檔案的根目錄中。如下圖
此名為myweb的資料夾為使用
vs2013
檔案發布的**站點資料夾,其中的
fis-conf
檔案為fis3
發布檔案。
關於fis-conf配置檔案的編寫,請參考
2.將待發布**檔案上傳到伺服器,並將編寫好的發布指令碼放到待發布的**檔案根目錄中。
如:本機**目錄檔案在d:\myweb中,在伺服器上的「
d:\待發布**檔案」下建立乙個目錄命名為
waitpublishweb
。則將本機
d:\myweb
目錄中的**檔案拷貝到伺服器上
d:\待發布**檔案
\waitpublishweb
中。fis-conf
檔案也拷貝到
d:\待發布**檔案
\waitpublishweb
中。按照文件《fis3發布
.net
到iis
上亂碼》配置
fis3
源**,不對
webconfig
做配置,
webconfig
的配置在源**中已做好。
操作步驟:
1:cmd
輸入:npm root -g
定位到資料夾下
lib\util.js
中 注釋
if (buffer.charcodeat(0) === 0xfeff)
2:開啟
iis
「.net
全球化」-編碼
-檔案-gb2312
改為utf-8
4.執行
cmd命令,進入
"d:\
待發布**檔案
\waitpublishweb"
目錄,執行發布命令
,命令格式為fis3 release -d d:\output
命令中的d:\output修改為發布目標**目錄,如
201環境中的發布目標**目錄為e:\website\eplus365。則命令為fis3 release -d e:\website\eplus365.
FIS3工作原理
fis3基於檔案物件進行構建,每個進入fis3的檔案都會例項化成乙個file物件。其構建流程大概分為三個階段 1.掃瞄專案目錄拿到檔案並初始化出乙個檔案物件的列表 掃瞄 2.對檔案物件中每乙個檔案進行單檔案編譯 編譯 3.獲取使用者設定的package外掛程式,進行打包處理 包括合併 打包 打包階段...
fis2 入門 fis3使用
api v2.0 api 3.0 f 1.使用 fis 只需要三條命令 fis server h 檢視幫助 fis server strart 開啟服務 fis server open 檢視fis的根目錄 fis release 進行編譯並且傳送檔案到指定的目錄 預設的是無服務www目錄,會自動將當...
Fabio技術手冊 2 部署
fabio的主要用例是將來自internet的http s 和tcp請求分發給前端 fe 服務,後者可以處理這些請求。在這個場景中,前端提供服務然後使用consul中的服務發現特性來查詢它們需要的後端 be 服務,以便為請求提供服務。這意味著fabio目前沒有用作fe be或be be路由器來在服務...