某hub图片看不了?很着急啊!

一个很难受的问题

朋友,你们逛全球最大的同性交友网站Github的时候,是否遇到过这个问题?
某hub图片看不了?很着急啊!_第1张图片
某hub图片看不了?很着急啊!_第2张图片

图片都无法显示了。这是什么情况?我已经遇到过好几次了,之前没时间管它,不过一直这样也不是办法啊,太难受了!今天我来探探究竟。

一探究竟

猜测:难道是缓存问题?

于是我使用组合键 ctrl + f5强制刷新了一下网页,发现不起作用。我又打开f12,强制清除缓存:
某hub图片看不了?很着急啊!_第3张图片
还是不行,图片依旧无法显示。

但是我打开f12后注意到一个问题,console里面一片红色:
某hub图片看不了?很着急啊!_第4张图片
看这样子应该是因为网络问题,加载图片资源失败了。

考虑到github是国外的网站,难道是被墙了?

应该不是,除了图片之外的代码和文档都可以访问,我猜测应该是图片服务器访问失败了。

于是我定位到图片的地址,看看这些图片是从哪个服务器请求的。

使用这个小箭头点击网页上图片的位置,可以看到源码:
某hub图片看不了?很着急啊!_第5张图片
然后我看到一个头像的图片地址是:https://avatars.githubusercontent.com/u/3961183?s=64&v=4

新打开一个窗口访问下这个地址:
某hub图片看不了?很着急啊!_第6张图片
哦豁,果然不出所料,无法访问。

域名映射IP

那么问题出在哪里呢?我打开百度一顿搜索,找到了答案:
某hub图片看不了?很着急啊!_第7张图片

这位网友说出现这个问题,一般有三种情况:

  1. dns污染
  2. host设置错误
  3. 官方更新了dns,但是dns缓存没有被更新,导致错误解析。

OK,知道问题的原因,我们就顺着他的思路来尝试解决下问题。

这里DNS解析出现问题,那么我们修改hosts文件,将域名和IP映射起来。

不知道hosts文件是什么东东的同学,可以看下这篇文章了解一下: Hosts文件详解

1. 搜索域名对应的IP:

通过 ipaddress.com 这个网站,先找到域名avatars.githubusercontent.com对应的ip地址。

在搜索框里输入需要查询的域名,点击搜索按钮:
某hub图片看不了?很着急啊!_第8张图片
搜索结果:
某hub图片看不了?很着急啊!_第9张图片
githubusercontent.com 对应的IP地址为: 199.232.96.133

2.修改hosts文件

hosts文件位置:C:\Windows\System32\drivers\etc
某hub图片看不了?很着急啊!_第10张图片
使用notepad++编辑器打开hosts文件,添加一条映射规则:

199.232.96.133  avatars.githubusercontent.com
ps: 添加完此映射关系之后,可以使用这个命令刷新下本地的DNS缓存: ipconfig/flush,打开CMD,输入 ipconfig/flush 即可。

然后我们再来访问刚才访问失败的图片:

某hub图片看不了?很着急啊!_第11张图片
可以看到,图片可正常访问。

那么我们再回到github,访问试试:
某hub图片看不了?很着急啊!_第12张图片
图片也都正常显示了,至此,我们的问题已经得到解决

我在网上找到了一份比较全的dns配置,这里也贴一下吧:


140.82.113.3      github.com
140.82.114.20     gist.github.com

151.101.184.133    assets-cdn.github.com
151.101.184.133    raw.githubusercontent.com
199.232.28.133     raw.githubusercontent.com 
151.101.184.133    gist.githubusercontent.com
151.101.184.133    cloud.githubusercontent.com
151.101.184.133    camo.githubusercontent.com
199.232.96.133     avatars.githubusercontent.com

同学们可以直接把这个copy到你本地的hosts文件里,执行命令:ipconfig/flush 后即可正常访问。

举一反三

如果再次遇到类似的问题,我们可以尝试通过配置DNS来解决。方法很简单,先在 ipaddress.com 找到域名对应的ip地址,然后把 ip和域名的映射规则配置到hosts文件即可。

比如: ==199.232.96.133        avatars.githubusercontent.com==

最后别忘记使用命令ipconfig/flush 刷新下DNS缓存哦(好像不执行此命令也可以,反正我本地是可以的,哈哈)

为了方便大家理解,我粗略画了一张图描述图片资源下请求的过程:
某hub图片看不了?很着急啊!_第13张图片
用户在访问 avatars.githubusercontent.com 这个域名的时候,会先通过本地DNS解析出实际的IP地址,如果有,则直接根据IP访问实际的文件服务器获取资源;如果本地解析不出来,会通过网络的DNS解析获取IP地址进行访问。最后文件服务器会将文件资源返回给浏览器请求,展示给用户。

我是 程序员青戈,我的公众号是 Java学习指南,专注于Java技术分享,感兴趣的同学可以关注下哈。不关注也可以的。
本文由博客群发一文多发等运营工具平台 OpenWrite 发布

你可能感兴趣的:(java)