LDTstore.com.cn 重大更新ReleaseNote - 新頁面
老弟苦等了兩個多月的新頁面終于來啦!好耶?。?!

新頁面
新頁面其實老弟從8月底就提出來要做了,關(guān)于之前的情況見動態(tài)。發(fā)了動態(tài)也并沒有找到人幫忙,后面放下了這件事情一個星期,10月底我最后嘗試了一次,斷斷續(xù)續(xù)用了一個周末,還是沒有做出來。就在我絕望地找老弟謝罪的時候,老弟提出他的工作室新來幫忙的老哥可能有這方面的經(jīng)驗,看看能不能合作一下。新來的老哥叫@CarrotGeball ,就叫他蘿卜兄吧。跟他聊了聊,很快就熟悉了,因為他說他之前有做游戲的相關(guān)經(jīng)驗,所以我覺得處理起來這些布局和動畫的計算問題應(yīng)該會很得心應(yīng)手,就跟老弟說肯定沒問題。前面幾天他先用flash打了個樣?,F(xiàn)在的這個頁面設(shè)計大概是他自己和老弟商量后確定的,和我之前的打算略有不同,不過我看到demo之后覺得這樣確實更好。一周以后也就是這周二,他就把做好的整個頁面布局和動畫發(fā)給我了。我看了真的大受震撼,沒有用任何框架和庫,幾百行CSS和JS全是自己寫的(側(cè)欄是字符串innerHTML插進(jìn)去的),我自己(因為數(shù)學(xué)極差)一看到那些坐標(biāo)計算腦袋就嗡嗡的,然后所有這些他是全部自己做出來的,還把我之前一直在發(fā)愁的圖標(biāo)做出來了,我真的十分佩服。拿到之后我開始整理代碼,初步整理之后,發(fā)現(xiàn)側(cè)欄的內(nèi)容切換他用了一種明顯比較別扭的方式去實現(xiàn),導(dǎo)致后續(xù)的工作會比較困難,就先掛在GitHub上讓他修改,一天之后他就修改好了。接下來因為側(cè)欄是直接用字符串插進(jìn)去的,幾乎完全不可維護(hù),因為側(cè)欄要承載的內(nèi)容很多,所以我覺得這個問題必須得先解決。一開始我打算重構(gòu)到React/Preact這樣的有虛擬DOM的框架,用了兩個晚上,因為動畫邏輯太(其實)復(fù)(只是我)雜(看不懂)以及我本來對React也不是很熟悉,所以進(jìn)展很慢。到了昨天晚上老弟又來催,說最好周五也就是今天能上線,我看了下目前的進(jìn)度,這么短的時間幾乎不可能完成如此大規(guī)模的重構(gòu)。就在這時我突然想到,以前了解過一種叫做template的元素能夠解決這個問題(這個故事告訴我們,往往就是那些平時不知道從哪里了解到的奇怪知識能在關(guān)鍵時刻派上了大用場)。瀏覽器不會渲染template,然后JS可以復(fù)制出其中的元素然后添加到頁面上,這就是template的用處。說干就干,我把所有的字符串形式的側(cè)欄都改寫成了template,然后再經(jīng)過一波整理和重構(gòu),順利地把側(cè)欄的渲染遷移到了template。然后再用template來寫側(cè)欄的內(nèi)容,就像直接寫HTML一樣(本來也是直接寫HTML,屬于是擱這擱這了),很快也完成了。就這樣整個頁面除了他還沒來得及做的幾個圖標(biāo),就全部完成了,我一看時間都四點多了,完全沒有感覺。今天早上起來之后看到他已經(jīng)把幾個圖標(biāo)做好了,我上傳了圖標(biāo),把nginx配置改好,經(jīng)過了幾次驚心動魄的線上事故(下面會說原因)之后,中午12點左右新頁面成功上線了。目前還有幾個小的bug,比如硬件討論群那里的鏈接點不進(jìn)去,再比如在iPad上試了一下圖標(biāo)可以上下滾動,以及他早上趕制的幾個圖標(biāo)有點小問題,這些都已經(jīng)在修了。
新頁面的GitHub地址:https://github.com/stackinspector/ldtstore-homepage
nginx相關(guān)(配置文件版本0.4.3)
- 新頁面的圖片資源是放在一個倉庫里然后用jsdelivr拉的,但是這樣的話圖片的路徑就會很長,HTML沒有辦法定義常量,暫時沒有好辦法,所以只好增加了從/assert/*到j(luò)sdelivr CDN(https://cdn.jsdelivr.net/gh/stackinspector/ldtstore-assert/*)的重定向。之后可能會通過在nginx里替換來解決。
- 由于增加了圖片資源重定向后客戶端并發(fā)請求量激增(頁面上有十幾個圖片資源,第一次訪問每個都需要請求一次然后重定向到CDN),如果再保持原來的請求限制措施(全局限速10請求每客戶端每秒)的話正常訪問很容易就會突破限制(實測200r/s也不行,因為它不是“區(qū)間測速”而是“瞬時測速”),也是暫時沒有好辦法,所以只能先限制http上的流量而不限制https上的,因為根據(jù)日志分析,絕大多數(shù)的各類攻擊請求都是打在http上的,而正常用戶訪問網(wǎng)站,除了第一次訪問重定向到https以外,以后就都是https了(我開啟了HSTS),之后再看這個問題怎么解決
- 由于獨立出來后(原先頁面的CSS和JS是通過我自己寫的構(gòu)建系統(tǒng)插入生成的HTML的,因為很短)的CSS和JS加載出現(xiàn)了異常,增加了顯式聲明UTF-8和之前一直遺漏掉的content-type
- 增加了bfs代理,為以后在頁面上添加視頻封面做準(zhǔn)備