当前位置:首页 » 硬盘大全 » 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选项,将相关文件进行匹配即可

​ 在项目中配置引用,则可将相关的资源文件