前言:今天小萌新想弄一个网站,买了一个1G的服务器搭建一个小型网站。可是图片不过才几张图片,加载的是真的慢…,作为一个前端,这不能忍。所以记录一下老生常谈的网页优化的问题。

这段时间整理自己的笔记,发现不够详细,以前写的东西也不够系统,所以有时间来重新详细的整理一下。本来图片加载慢就属于网页优化的问题,所以这里总体来说一下关于优化的那些事儿

Ⅰ、图片优化

  1. 优化图片
    可以使用简单的方式直接压缩图片,压缩程度就看各自的需求了,https://tinypng.com/,网上自行搜索还有很多类似的网站。
  2. 优化CSS Sprite
    在Sprite图片中横向排列一般都比纵向排列的最终文件小组合Sprite图片中的相似颜色可以保持低色数,最理想的是256色以下PNG8格式“对移动端友好”,不要在Sprite图片中留下太大的空隙。虽然不会在很大程度上影响图片文件的大小,但这样做可以节省用户代理把图片解压成像素映射时消耗的内存。100×100的图片是1万个像素,而1000×1000的图片就是100万个像素了。
    不过这也有一定的缺点:在长期开发多人合作的项目中,会不好维护这些sprites,每次对icon做修改,都得相应的改动css里background-position的值,相当繁琐.
  3. 不要用HTML缩放图片
<img width="100" height="100" src="mycat.jpg" alt="My Cat" />
不要因为在HTML中可以设置宽高而使用本不需要的大图。如果需要那么图片本身(mycat.jpg)应该是100x100px的,而不是去缩小500x500px的图片。
  1. 用小的可缓存的favicon.ico(P.S. 收藏夹图标)
     favicon.ico是放在服务器根目录的图片,它会带来一堆麻烦,因为即便你不管它,浏览器也会自动请求它,所以最好不要给一个404 Not Found响应。而且只要在同一个服务器上,每次请求它时都会发送cookie,此外这个图片还会干扰下载顺序,例如在IE中,当你在onload中请求额外组件时,将会先下载favicon。
    所以为了缓解favicon.ico的缺点,应该确保:足够小,最好在1K以下设置合适的有效期HTTP头(以后如果想换的话就不能重命名了),把有效期设置为几个月后一般比较安全,可以通过检查当前favicon.ico的最后修改日期来确保变更能让浏览器知道
  2. 使用云连接,把图片存在服务器或者云

Ⅱ、减少http请求,杜绝404请求

80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,Flash等等。减少组件数必然能够减少页面提交的HTTP请求数。这是让页面更快的关键。

减少页面组件数的一种方式是简化页面设计。但有没有一种方法可以在构建复杂的页面同时加快响应时间呢?嗯,确实有鱼和熊掌兼得的办法。

合并文件是通过把所有脚本放在一个文件中的方式来减少请求数的,当然,也可以合并所有的CSS。如果各个页面的脚本和样式不一样的话,合并文件就是一项比较麻烦的工作了,但把这个作为站点发布过程的一部分确实可以提高响应时间。

CSS Sprites是减少图片请求数量的首选方式。把背景图片都整合到一张图片中,然后用CSS的background-image和background-position属性来定位要显示的部分。

图像映射可以把多张图片合并成单张图片,总大小是一样的,但减少了请求数并加速了页面加载。图片映射只有在图像在页面中连续的时候才有用,比如导航条。给image map设置坐标的过程既无聊又容易出错,用image map来做导航也不容易,所以不推荐用这种方式。

行内图片(Base64编码)用data: URL模式来把图片嵌入页面。这样会增加HTML文件的大小,把行内图片放在(缓存的)样式表中是个好办法,而且成功避免了页面变“重”。但目前主流浏览器并不能很好地支持行内图片。

减少页面的HTTP请求数是个起点,这是提升站点首次访问速度的重要指导原则。

Ⅲ、减少DNS查找

域名系统建立了主机名和IP地址间的映射,就像电话簿上人名和号码的映射一样。当你在浏览器输入www.yahoo.com的时候,浏览器就会联系DNS解析器返回服务器的IP地址。DNS是有成本的,它需要20到120毫秒去查找给定主机名的IP地址。在DNS查找完成之前,浏览器无法从主机名下载任何东西。

DNS查找被缓存起来更高效,由用户的ISP(网络服务提供商)或者本地网络存在一个特殊的缓存服务器上,但还可以缓存在个人用户的计算机上。DNS信息被保存在操作系统的DNS cache(微软Windows上的”DNS客户端服务”)里。大多数浏览器有独立于操作系统的自己的cache。只要浏览器在自己的cache里还保留着这条记录,它就不会向操作系统查询DNS。

IE默认缓存DNS查找30分钟,写在DnsCacheTimeout注册表设置中。Firefox缓存1分钟,可以用network.dnsCacheExpiration配置项设置。(Fasterfox把缓存时间改成了1小时 P.S. Fasterfox是FF的一个提速插件)

如果客户端的DNS cache是空的(包括浏览器的和操作系统的),DNS查找数等于页面上不同的主机名数,包括页面URL,图片,脚本文件,样式表,Flash对象等等组件中的主机名,减少不同的主机名就可以减少DNS查找。

减少不同主机名的数量同时也减少了页面能够并行下载的组件数量,避免DNS查找削减了响应时间,而减少并行下载数量却增加了响应时间。我的原则是把组件分散在2到4个主机名下,这是同时减少DNS查找和允许高并发下载的折中方案。

Ⅳ、避免重定向

重定向用301和302状态码,下面是一个有301状态码的HTTP头:

HTTP/1.1 301 Moved Permanently
Location: http://example.com/newuri
Content-Type: text/html
  浏览器会自动跳转到Location域指明的URL。重定向需要的所有信息都在HTTP头部,而响应体一般是空的。其实额外的HTTP头,比如Expires和Cache-Control也表示重定向。除此之外还有别的跳转方式:refresh元标签和JavaScript,但如果你必须得做重定向,最好用标准的3xxHTTP状态码,主要是为了让返回按钮能正常使用。

牢记重定向会拖慢用户体验,在用户和HTML文档之间插入重定向会延迟页面上的所有东西,页面无法渲染,组件也无法开始下载,直到HTML文档被送达浏览器。

有一种常见的极其浪费资源的重定向,而且web开发人员一般都意识不到这一点,就是URL尾部缺少一个斜线的时候。例如,跳转到http://astrology.yahoo.com/astrology会返回一个重定向到http://astrology.yahoo.com/astrology/的301响应(注意添在尾部的斜线)。在Apache中可以用Alias,mod_rewrite或者DirectorySlash指令来取消不必要的重定向。

重定向最常见的用途是把旧站点连接到新的站点,还可以连接同一站点的不同部分,针对用户的不同情况(浏览器类型,用户帐号类型等等)做一些处理。用重定向来连接两个网站是最简单的,只需要少量的额外代码。虽然在这些时候使用重定向减少了开发人员的开发复杂度,但降低了用户体验。一种替代方案是用Alias和mod_rewrite,前提是两个代码路径都在相同的服务器上。如果是因为域名变化而使用了重定向,就可以创建一条CNAME(创建一个指向另一个域名的DNS记录作为别名)结合Alias或者mod_rewrite指令。
 
摘自连接: 
https://blog.csdn.net/u012496505/article/details/73824327
https://www.cnblogs.com/xianyulaodi/p/5755079.html

网站加载图片慢 网页响应慢 网页优化相关推荐

  1. 网站加载图片速度提升

    发现网站加载图片速度很慢,于是尝试去找了一下经济又高效的加速方案. 基本分为三种:提升服务器带宽.OSS云存储和CDN加速.OSS的基础上还能进一步用CDN加速,不过费用就要进一步提升了. 1.提升服 ...

  2. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化 在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体 ...

  3. 解决网站加载图片太慢

    1.压缩图片 由于网站加载高清无损的照片的是十分耗时的,如果动不动就是几M,甚至10几M的图片,那加载起来可就难受了,所以我们第一个应该想到的是压缩图片来解决图片的大小,推荐两个很好用的压缩图片的网站 ...

  4. 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度

    网站加载速度的快慢,直接影响用户的去留.这里为大家持续更新我的经验,帮你解决网页速度很慢,慢在哪里,该怎么优化的问题.希望对你有所帮助! 1.  网站空间要好:网站需要一个稳定的服务器或者虚拟机,可以 ...

  5. firefox网页慢加载图片慢或加载不出来

    对于ubuntu上网页慢(网页打开速度慢),图片难加载问题一直是个头疼的事.今天终于解决了 可直接把我的配置文件靠过去,放在指定位子(/etc/*); 简化步骤:   window请直接看第三条< ...

  6. 从本地或网页加载图片

    从本地加载图片 NSString *boundle = [[NSBundle mainBundle] resourcePath]; [web1 loadHTMLString:[NSString str ...

  7. iis服务器响应缓慢,IIS网站加载缓慢怎么办?如何处理?

    您的IIS网站加载缓慢吗?我们可以帮助您修复它. 一个慢速的网站将永远赶走您的有效访问者. IIS网站的运行缓慢通常可以通过更改某些IIS功能来解决. 在Bobcares,我们收到客户的请求,以使II ...

  8. DSP C6657 image_processing_evmc6657l网页加载图片示例

    演示视频 DSP C6657网页加载图片示例演示视频 TI官方指导 hua_evmc6657l,CSDN参考示例

  9. 网页 从其他服务器 加载图片,实现网页图片的异步加载

    如题. 最近在进行开发的项目中,有一个网页需要使用非常多的图片,那么必须对图片的加载做优化.使用流式加载图片的方法是绝对不行,对服务器的带宽将是非常大的考验,于是,我考虑使用图片的异步加载. 在网上寻 ...

最新文章

  1. JS数组方法(forEach()、every()、reduce())
  2. Entity Framework CodeFirst尝试
  3. 计算机英语 动态,计算机英语高级词汇精选
  4. 在原有AXIS WEBSERVICE基础如何制作不依赖AXIS并在WAS发布的WEBSERVICE
  5. java 枚举 大小_Java枚举入门
  6. sql 拼接int类型的字段_这才是SQL优化的正确姿势!
  7. Java面试之JVM参数调优
  8. DE29 Matrix Exponentials
  9. 分布式服务的幂等性设计,值得学习!
  10. Atitit prj 项目管理与行政管理(1)------项目环境的概览与建立
  11. iptables基础(01)
  12. Proxyee-down – 百度网盘全平台满速下载神器,还带有IDM的全网嗅探功能!(替代PanDownload)
  13. Jmeter性能测试之命令行执行和生成测试报告
  14. TransModeler交通仿真软件的最新特点
  15. 从阿里云dms导出mysql无法导入_MySQL数据库怎么导入数据?怎么用DMS导入数据?...
  16. ghost使用大全-GHOST,竟然不知道这么多参数
  17. WannaCry勒索病毒处理指南
  18. 国内CMS网站内容管理系统介绍
  19. 揭秘无线充电,8大无线充电应用方案合集
  20. 智能鸡舍环境监控系统设计思路

热门文章

  1. 10个 解放双手的 IDEA 插件,这些代码都不用写(第二弹)
  2. 二次元博客系统Halo
  3. 大数据集群扩容机架分配
  4. java 监控usb端口插拔_监控USB设备插拔
  5. java教程_java学习的秘籍
  6. jsp 自动倒数_JSP中的倒数计时器
  7. android TextView 添加下划线
  8. 王道数据结构习题代码3.3.7(栈和队列的应用)
  9. 使用 golang gopacket 实现进程级流量监控
  10. 【语音去噪】基于切比雪夫+椭圆形低通滤波器语音去噪附GUI界面