一个很难受的问题
朋友,你们逛全球最大的同性交友网站Github的时候,是否遇到过这个问题?
图片都无法显示了。这是什么情况?我已经遇到过好几次了,之前没时间管它,不过一直这样也不是办法啊,太难受了!今天我来探探究竟。
一探究竟
猜测:难道是缓存问题?
于是我使用组合键 ctrl + f5
强制刷新了一下网页,发现不起作用。我又打开f12
,强制清除缓存:
还是不行,图片依旧无法显示。
但是我打开f12
后注意到一个问题,console里面一片红色:
看这样子应该是因为网络问题,加载图片资源失败了。
考虑到github是国外的网站,难道是被墙了?
应该不是,除了图片之外的代码和文档都可以访问,我猜测应该是图片服务器访问失败了。
于是我定位到图片的地址,看看这些图片是从哪个服务器请求的。
使用这个小箭头点击网页上图片的位置,可以看到源码:
然后我看到一个头像的图片地址是:https://avatars.githubusercontent.com/u/3961183?s=64&v=4
新打开一个窗口访问下这个地址:
哦豁,果然不出所料,无法访问。
域名映射IP
这位网友说出现这个问题,一般有三种情况:
- dns污染
- host设置错误
- 官方更新了dns,但是dns缓存没有被更新,导致错误解析。
OK,知道问题的原因,我们就顺着他的思路来尝试解决下问题。
这里DNS解析出现问题,那么我们修改hosts文件,将域名和IP映射起来。
不知道hosts文件是什么东东的同学,可以看下这篇文章了解一下: Hosts文件详解
1. 搜索域名对应的IP:
通过 ipaddress.com 这个网站,先找到域名avatars.githubusercontent.com
对应的ip地址。
在搜索框里输入需要查询的域名,点击搜索按钮:
搜索结果:githubusercontent.com
对应的IP地址为: 199.232.96.133
2.修改hosts文件
hosts文件位置:C:\Windows\System32\drivers\etc
使用notepad++编辑器打开hosts文件,添加一条映射规则:
199.232.96.133 avatars.githubusercontent.com
ps: 添加完此映射关系之后,可以使用这个命令刷新下本地的DNS缓存:ipconfig/flush
,打开CMD,输入ipconfig/flush
即可。
然后我们再来访问刚才访问失败的图片:
那么我们再回到github,访问试试:
图片也都正常显示了,至此,我们的问题已经得到解决
我在网上找到了一份比较全的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缓存哦(好像不执行此命令也可以,反正我本地是可以的,哈哈)
为了方便大家理解,我粗略画了一张图描述图片资源下请求的过程:
用户在访问 avatars.githubusercontent.com
这个域名的时候,会先通过本地DNS解析出实际的IP地址,如果有,则直接根据IP访问实际的文件服务器获取资源;如果本地解析不出来,会通过网络的DNS解析获取IP地址进行访问。最后文件服务器会将文件资源返回给浏览器请求,展示给用户。
我是程序员青戈
,我的公众号是Java学习指南
,专注于Java技术分享,感兴趣的同学可以关注下哈。不关注也可以的。
本文由博客群发一文多发等运营工具平台 OpenWrite 发布