當前位置:首頁 » 硬碟大全 » github緩存伺服器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

github緩存伺服器

發布時間: 2023-03-16 10:53:39

⑴ Github 部署 | CDN 加速網頁,速度嗖嗖的快!

前兩篇文章給大家分享了 如何在 Github 部署網頁 以及 給網頁上自定義域名 ,相信很多人就算不看我這兩篇分享,也能部署自定義族脊域名的 Github 網頁。然而,很快又會被 Github 那拉跨的網速勸退。

我在 Github 上隨便找了個 http://blesstosam.github.io/ 的網頁測了一下速度,好傢伙,大半個中國都訪問不了, 點擊這里查看詳情 。

全是紅色,嚇死個人兒。再給大家看看上了 CDN 的速度如何:

雖然有的時候訪問還不太行,但是整體情況比上面襪瞎 彳亍 了不少。

由於 Github 伺服器在國外,本來信息傳遞就很慢,再加上某些原因,有的時候甚至連打開都費勁。

那用國外 CDN 如何呢?Emmm,我去 AWS 搞了一下,說實話沒太搞懂,而且現在賬號都沒怎麼用了,還處於欠費還錢的狀態。。。

我自己剛接觸國內 CDN 的時候發現:

什...么?使用國內 CDN 只能給國內域名使用?

什...么?買了國內的域名還要備案?

什...么?備案前還要先租 3 個月的伺服器?

草(一種植物),我 TMD 還沒開始配告穗空置呢,就得花 200 租個伺服器?怕我自己不是個憨憨,白嫖失敗。

不過,最近發現騰訊雲上也可以給國外的域名上 CDN 了,就來分享一波吧。

開始前,希望 xdm 准備好以下東西:

簡單過一下 CDN 的原理,CDN 原名叫 內容分發網路

為啥叫 內容分發 呢?如果一個快遞從黑龍江送到海南,大概需要 45 個小時。

京東 的思路就不一樣了:我先把大量的貨物都放到海南的一個倉庫里,當有人下單後,可以直接從海南的小倉庫直接發貨,這就能大大減少交貨時間,整個框架就是 內容分發網路

從上面可以看出 CDN 兩大特點:

不知道大家有沒有想到這個問題:如果 CDN 做了緩存,那麼,就算我發布新版本,CDN 緩存還是舊的文件,用戶依然只能看到舊頁面。

事實上,無論是 React 還是 Vue 項目,在打包之後,都會將 js,css 的文件名存為 [contenthash].js 和 [contenthash].css ,其中, contenthash 就是整個文件內容的 hash 值。

只要文件內容一變,那麼 contenthash 值就會變,會在 CDN 上新上傳一份 css 或 js 文件,而且 index.html 引用的 css 和 js 資源路徑也會跟著變,這就解決了每次發布都不能覆蓋上個版本的問題了。

可能有人的又會問了: 「 contenthash 值一樣,不怕文件被覆蓋么?」 。 contenthash 值一樣說明了文件的內容是一樣的,就算被覆蓋了也是被同樣的內容覆蓋,所以文件覆蓋不是問題。

還會有人問: 「如果我的文件改一個字,就發布一次,每次發布都會發一個新 js 或 css 文件,那 CDN 上的資源不是會變得越來越多?」 。確實會有這個問題,不過 CDN 的資源空間理論上是無限的,而且 js 和 css 一般不會占很大空間,你也不能一天發 100 個版本吧?就算存儲空間不足,讓運維去擴充空間就好了。

這里要注意:不能把 index.html 打包成 [contenthash].html ,因為 Github 要求我們分支上的 html 文件只能叫 index.html ,而同名文件放在 CDN 上又會有上面緩存不更新的問題,所以只有 css 和 js 等靜態資源是需要 CDN 緩存的,而 html 是不能緩存的。

總的來說,我們的架構要從這樣:

變成這樣:

在 DNS 到 Github 之間多了個 CDN 伺服器。

首先, 點擊: https://console.cloud.tencent.com/cdn 進入 CDN(內容分發網路) 的控制台。

點擊 域名管理 -> 添加域名

然後在 域名配置 中國境外 ,填上你的域名,然後選擇 靜態加速

其實 CDN 只是個中間商,本質上是作為中間站轉發,所以這里要配置源站的 IP 地址,也就是緩存的 html, css, js 要從哪裡獲取。因為我們是將網頁部署在 Github 上的,所以這里要填入 Github 提供的 4 個 A 記錄。

這里不要選擇 HTTPS,因為如果使用了 CDN 回源訪問之後,Github 自己是檢測不出來的,然後也不會給你自動配置 HTTPS,所以千萬不要選 HTTPS!通過 HTTP 才能正常回源訪問 Github 源網站。

還記得我們剛說不要把 index.html 也緩存了么,不然部署後看到還是上一個版本的 html。所以,在服務配置里的 緩存行為-不緩存 里添加 html 的後綴。

同時,你還可以選擇 節點緩存 瀏覽器緩存

瀏覽器緩存 好處是可以節省 CDN 上的流量(對,流量也是要錢的,雖然不多),壞處也很明顯,萬萬萬一你要真的進行內容刷新,那麼用戶訪問的有可能還是以前的版本。

這里大家按自己的情況來選擇就好了,我這里只加了節點 2 天的緩存就夠了。

最後點擊提交。

給個人網頁上 HTTPS 是很有必要的,不然別人進你的網頁,瀏覽器還彈出 「您訪問的網站不安全」 就顯得有點業余。所以,這一步來給我們的域名上 SSL 證書。

在原來的 內容分發網路控制台 點擊 證書管理 創建一個證書。

進入配置頁後,先填入你的域名,再選擇證書。

相信大部分人剛開始是沒有 騰訊雲託管證書 的,所以點一下上面的 SSL 證書管理 進入管理頁面,再點擊申請免費證書(白嫖):

然後一步步去填內容就好:

注意,在第三步這里,需要驗證你的域名合法性,需要在 NameSilo 上添加一條 TXT 記錄。

添加後會是這樣(你也可以等到下一步配置 NameSilo 時再添加 TXT 記錄,然後再繼續下面的步驟):

當驗證通過後,就可以給自己的域名頒發證書了。

最後一步,回到 內容分發網路 ,在 配置證書 里綁定剛剛的證書,這樣我們的 CDN 也可以擁有 HTTPS 啦。

回到 域名管理 可以發現 CDN 給我們提供了一個 CNAME:

只要將 DNS 的 CNAME 指向 CDN 的 CNAME,那麼整條訪問鏈路就被我們串起來了。

打開 NameSilo 的 域名管理頁面 :

進入域名詳情頁後,在 左上角的 DNS Records 點擊 Update (這個配置頁面是真的難找啊):

然後點擊 CNAME 添加兩個 CNAME 記錄, value 處填剛剛從騰訊雲獲取的 CDN 的 CNAME

然後,去買杯咖啡,看看 B 站,等一小時後,前往你的域名看看吧。

總結一下,我們這里做了什麼:

相信配置完這一套,你的網站訪問速度會比以前快不少。

如果覺得這篇文章能幫到大家,可以點個贊再走咯~

⑵ 來了解 Github 當前最火開源項目 RecyclerView 的緩存機制

最近在網上看到許多關於 RecyclerView 緩存相關的技術文章,也是在其中看到了許多的知識點,我將之收集了起來進行匯總和整理,利用自己的見解來分析 RecyclerView 的緩存機制的相關問題

首先 RecyclerView 是由 Google 推出來對 GridView 和 ListView 進行取代的列表方案,RecyclerView 本身它是不關心視圖相關的問題的,由於 ListView的緊耦合的問題, google 的改進就是 RecyclerView 自身不用參與任何視圖有關的問題,它不用在意應該將子 View 放在合適的位置,也不在意如何進行分割這些子 View,更不在意每個子View所顯示的外觀,本質上來說就是 RecyclerView 它只負責回收和重用的工作

● 能夠替代 Listview 和 GridView ,不僅可以載入列表同時也能夠載入表格

● 能夠支持瀑布流這種高級的顯示方式

● 內置了強勁的垃圾回收機制

● 規范了其 Viewholder 的使用

在 RecyclerView 中,是沒有 onItemClickListener 方法的,所以只能在適配器中處理事件,如果要從適配器上添加或移除條目,就必須要明確通知適配器。這跟先前的 notifyDataSetChanged 方法有略微不同

整體總結了幾點如下:

● Adapter:包裝數據集合且為每個條目創建視圖

● ViewHolder:對每個用於顯示數據條目的子View進行保存

● LayoutManager:在適當的位置放置於每個條目的視圖

● ItemDecoration:繪制一些裝飾視圖在每個條目的視圖的周圍或上面

● ItemAnimator:在條目被添加、移除或者重排序時對其添加動畫效果

RecyclerView 的緩存可以分為四級,也有的人將之分成三級,但大致的理解是一樣的

● mAttachedScrap 和 mChangedScrap ,用來緩存其還在屏幕內的 ViewHolder

● mAttachedScrap 對當前還在屏幕中的 ViewHolder進行存儲;從 id 和 position 來對 ViewHolder進行查找

● mChangedScrap 表達數據已經改變的 ViewHolder 列表, 存儲 notifyXXX 方法時必須對 ViewHolder進行改變

● mCachedViews ,是用來緩存移除屏幕之外的 ViewHolder,通常其緩存容量是 2,但可以通過 setViewCacheSize 方法來改變緩存的容量大小,假如mCachedViews 的容量已滿,那麼則會根據 FIFO 其中的規則來對舊 ViewHolder 進行移除處理

● ViewCacheExtension ,是開發給用戶的自定義擴展緩存,是需要用戶自己管理 View 的創建和緩存

● RecycledViewPool ,ViewHolder 緩存池,如果在有限的 mCachedViews 中存不下新的 ViewHolder 時,那麼就會把 ViewHolder 存入RecyclerViewPool 中

● 根據 Type 來對進行 ViewHolder 查找

● 每個 Type 基本上默認最多緩存 5 個

● 具有可以多個 RecyclerView 共享 RecycledViewPool

onCreateViewHolder 用於對 item.xml 進行機芯實例化,並會以 ViewHolder 的形式呈現

onBindViewHolder 致用在初始和滑動 RecyclerView 時,給予item裡面的子控制項賦值

在我的理解中, onCreateViewHolde r和 onBindViewHolder 加起來就類似於 ListView adapter 裡面的

雖然getView()裡面既有parent可以用來實例化 item.xml ,又有 position 可以找到item位置來賦值,但是本質上還是如同 onCreateViewHolder 和 onBindViewHolder 的功能!

差異區別就只是在item的表示形式從View變成了 ViewHolder

以上就是關於 RecyclerView 緩存的所有內容

關於RecyclerView的緩存,總的來說,Scrap是屏幕內的緩存一般我們不怎麼需要特別注意;Cache可直接拿來復用的緩存,性能高效

ViewCacheExtension 需要開發者自定義的緩存,API設計比較奇怪,慎用

RecycledViewPool 四級緩存,可以避免用戶調用onCreateViewHolder 方法,提高性能,在 ViewPager+RecyclerView 的應用場景下可以大有作為

如果喜歡文章中的內容歡迎大家點贊和評論,你們的鼓勵將是我前進的動力

有需要文章中的源碼,或者想要了解更多關於Android開發相關的進階資料

歡迎大家在評論區下發留言,或者私信我

⑶ 怎麼把github倉庫變成伺服器

方法/步驟 1 在windows系統客戶端安裝git工具。 註:如何安裝git工具在此不做介紹,如需了解可網上搜索安裝介紹。 2 在「本地文件」中添加「.git文件」,用於git管理。 進入本地文件夾,右擊滑鼠-單擊Git Init Here-生成.git文件夾。 3 在github創建倉庫寬滾手用於存儲管理本地文件,示例:Blog。 點擊賬號前的加號(Create New)--New repository,根據引導創建一個Blog倉庫。 4 遠程添加github上的Blog倉庫。 1)進入本地文件夾下-右擊滑鼠-Git Gui-遠端(remote)-Add... 5 2)獲取github中Blog倉庫的地址。 6 3) 在Add Remote窗口中填寫名字、Location。 名字:Blog Location:粘貼剛剛復制的Blog倉庫路徑 最後單擊「Add」。 7 將本地文件內備賣容即「已緩存的改動」,提交git管理的master分支上。 8 將本地文件上傳到github上去。 單擊Git Gui界面「上傳」--「上傳」窗口隨意勾選一個或多個傳輸選項--點擊「上傳」--上傳Blog過程中需要輸入github的登錄賬號和密碼。 9 在github上查看本地文件Blog項目是否上傳成功。 注意事項 .git文件夾是隱藏的項目,在「查看」中允許隱藏項目顯示才可以看見。 「上傳慎嫌」窗口中必須勾選一個或多個傳輸選項,傳輸選項不能為空否則上傳會失敗。

⑷ 騰訊雲cdn緩存github

登錄
首頁
學習
實踐
活動
專區
工具
TVP
返回騰訊雲官網
hahah
32 篇文章
關注
hexo-優化-網站訪問加速
2022-06-15 19:46:29閱讀 4820
hexo-優化-網站訪問加速
​ 加速hexo項目訪問速度,可採用CDN加速的方式進行,亦或是參考採用多線部署+域名映射的方式進行構建。針對圖片資源問題,可藉助圖床服務構建圖片資源存儲。

網站訪問加速方案

<1>靜態資源CDN緩存:基於github+jsDelivr構建
<2>圖片資源存儲:可藉助騰訊雲COS或者其他對象存儲構建資源存儲
復制
1.CDN引入
​ jsDelivr是一個免費、快速和可信賴的全球CDN加速服務,可基於多種組合方式構建cdn加速,常見的白嫖方案有github/又拍雲/等+jsDelivr的組合方式

Github+jsDelivr實現cdn加碼歷仿速
構建說明

<1>新建github倉庫用於存儲資源數據信息(自定義數據存儲)

<2>發布資源版本信息

<3>通過jsDelivr引用資源信息

<4>jsDelivr緩存更新

構建爛攔過程參考
<1>github倉庫構建
​ 初始化github倉庫,上傳資源文件信息(自定義分類存儲),一般將經常訪問的靜態資源文件上傳即可(注意資源訪問路徑遲纖問題,可以將themes下的資源文件整個打包)

<2>資源版本發布
​ 倉庫構建完成並上傳資源,完成後發布資源版本

​ 填充發布版本信息,發布版本內容

<3>資源引用信息
通過地址引用資源內容

# 引用路徑規則
https://cdn.jsdelivr.net/gh/github用戶名/你github倉庫名@發布的版本號/文件路徑
復制
​ 例如訪問指定路徑下的發布的圖片信息

​ 倉庫初始化完成,但在訪問過程出現:Failed to fetch version info for 用戶名/倉庫名 提示,此外針對一些沒有經常更新的倉庫也會出現這種情況,多傳幾次文件、更新發布版本再次嘗試即可

hexo項目引用

​ 如果需要在hexo項目中引用自定義的CDN服務,則可通過配置主題配置文件_config,butterfly.yml中的CDN選項,將相關文件進行匹配即可

​ 在項目中配置引用,則可將相關的資源文件