浏览器缓存和压缩优化技术

一、HTTP缓存机制
缓存分类
1、200 from cache:直接从本地缓存中获取响应,最快速,最省流量,因为根本没有向服务器发送请求;
2、304 NOT Modified:协商缓存,浏览器在本地没有命中的情况下,请求头发送一定的校检数据到服务端,如果服务端数据没有改变浏览器从本地缓存响应,返回304
快速,发送的数据很少,只返回一些基本的响应头信息,数据量很小,不发送实际的响应体;
3、200 OK:以上两种缓存失败,服务器返回完整的响应。没有用到缓存,相对较慢;
相关的头信息:
Pragma:HTTP1.0时代遗留的产物,该字段被设置no-cache时,会告知浏览器禁用本地缓存,即每次都要向服务器发送请求;
Expires:HTTP1.0时代启用本地的缓存,告诉浏览器缓存实现的时刻,如果没有到该时刻,标明缓存有效,无需发送请求;(浏览器和服务器的时间无法保持一致,如果时间差距太大,就回影响缓存效果);
Cache-control:HTTP1.1针对Expires时间不一致的解决方案,告知浏览器缓存过期时间不是时间间隔而是秒,这样就会解决时间不一致的问题;
no-store:禁止浏览器缓存响应
no-cache:不允许直接使用缓存,先发起请求和服务器协商
max-age=单位:秒,告知浏览器该响应本地缓存有效的最大期限,以秒为单位;
优先级:Pragma > cache-control > Expires
Last-modified:通知浏览器资源最后的修改时间
if-Modified-Since:得到资源最后的修改时间,会将这个信息提交到服务器做检查,如果没有修改,返回304状态码;
Etag:HTTP1.1推出,文件指纹标识符,如果文件内容修改指纹会改变;
if-None-Match:本地缓存失效,会携带此值去请求服务器,服务器判断该资源是否改变,如果没有改变,直接使用本地缓存,返回304;
缓存策略的选择:
适合做本地缓存:
1、不变的图像,如logo,图标等;
2、js、css静态文件;
3、可下载的内容,媒体文件;
适合做协商缓存:
1、HTML文件;
2、经常替换的图片;
3、经常修改的js、css文件;
4、js、css文件的加载可以加入文件的签名来拒绝缓存;
不建议缓存的内容:
1、用户隐私等敏感的信息;
2、经常改变的api数据接口
二、Nginx配置缓存策略
本地缓存配置:
expires time; 通知浏览器过期的时长
为负值时表示Cache-Control:no-cache
为正值或者为0,就表示Cache-Control:max-age=指定的时间

协商缓存:
Etag:指定签名 on|off 默认开启
三、前端代码和前端的压缩
优势:让资源文件更小,加快文件在网络的传输,让网页更快的展现,降低带宽和流量的开销;
压缩方式:js、css、图片、html的代码压缩、gzip压缩
js代码压缩:一般就是去除多余的空格和回车、替换长变量名、简化一些代码写法等;
常用的压缩工具:UglifyJS(压缩、语法检查、美化代码、代码缩减、转化)、YUI Compressor(只有压缩)、Closure(和UglifyJS类似,压缩方式不一样)、Compiler
css压缩:去除空白符、注释优化一些css语义规则;
常用的压缩工具:YUI Compressor(只有压缩)、CSS Compressor
HTML压缩:不建议使用代码压缩,建议使用gzip压缩
图片压缩工具:tinypng、jepgMini、ImageOptim
gzip压缩
Nginx配置:

原文地址:https://www.cnblogs.com/meichao/p/9497522.html

时间: 2024-10-08 22:20:58

浏览器缓存和压缩优化技术的相关文章

nginx优化--gzip压缩与expire浏览器缓存

gzip压缩 概述 网页在服务器端经过了gzip或者其他格式的压缩后的输出明显减少了content-length字节,当访问过百万时,这些减少的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以及网页的访问速度; 原理 客户端在向服务端发送http请求时,在请求头中有一个Accept-Encoding的头信息,该头信息告知服务器端本客服端能接收什么样的压缩文件,如果服务器端配置了压缩的需求,就会返回相应的压缩文件,然后浏览器再解码呈现出来;我们在做采集时,需要采集的是未压缩的文件,所以在h

静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)

原文:静态资源文件自动压缩并替换成压缩版本(大型网站优化技术) 这一次,我总结和分享一项大型网站优化技术,那就是在项目中自动压缩静态资源文件(css.js),并让网站自动加载压缩后的资源文件.当然,这项技术在雅虎35条前端优化建议里也有记载,但它那只是给出一个理论的方案而已,并且采用的是外部压缩工具去压缩,而在我的项目中,是直接通过自己的程序自动化去压缩所有css.js文件,然后让页面直接加载所压缩后的资源,接下来直接进入主题. 本次实验使用的是PHP脚本语言,版本是PHP5.6,是在LINUX

tomcat压缩优化和缓存策略

tomcat压缩内容 tomcat的压缩优化就是将返回的html页面等内容经过压缩,压缩成gzip格式之后,发送给浏览器,浏览器在本地解压缩的过程. 对于页面量信息大或者带宽小的情况下用压缩方式还是蛮适用的. 开启tomcat进行压缩的设置 将 1 2 3 4 <Connectorport="8080"  protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="844

web性能优化:详说浏览器缓存

前言 在前端开发中,缓存有利于加快网页的加载速度,同时缓存能够被反复利用,所以可以减少流量和带宽的开销. 缓存的分类有很多种,CDN缓存.数据库缓存.代理服务器缓存和浏览器缓存.本篇将来讲解一下Web开发中的浏览器缓存.这个在实际开发环境中往往也会被问到,或者使用到.如何去准确认清楚缓存的概念,是前端必须要去学习的 今天在做项目的优化的时候,使用chrome开发者工具的network发现了细节: 虽然这两个看起来都是从缓存中读取,但还是有一些不一样的! 首先什么是缓存吧 平时生活当中缓存一集电视

前端性能优化成神之路-浏览器缓存机制详解

对一个网站而言,CSS.javascript.logo.图标这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的,如果将这些文件缓存在浏览器中,可以极好的改善性能. 通过设置http头中的cache-control和expires的属性和HTML Meta标签,可设定浏览器缓存,缓存时间可以是数天,甚至是几个月. 浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息(主要) HTML Meta 标签定义的缓存机制 可以在HTML页面的<head>节

前端技术基础(二):浏览器缓存

浏览器缓存介绍 我们知道,浏览器可以通过http请求获得的资源,根据服务端的设置作一定的缓存处理,以加快下一次再使用同类资源时调出的速度,这便是浏览器缓存. 浏览器缓存分类 浏览器缓存分为以下两类:强缓存和协商缓存(也叫弱缓存) 强缓存 强缓存的命中意为完全不向服务端再次请求该资源,直接从缓存中读取.强缓存对应http头中的Expires与Cache-Control两个字段. Expires Expires,是http1.0规范的字段,它顾名思义,表示该缓存的失效时间.由于它是一个标准时间,如若

前端优化技术笔记

设备优化 1.在 Internet上域名与IP地址之间是一一对应的,域名很好记,但计算机不认识,计算机之间的“相认”还要转成ip地址.在网络上每台计算机都对应有一个独立的ip地址.在域名和ip地址之间的转换工作称为域名解析,也称DNS查询.一次DNS的解析过程会消耗20-120毫秒的时间,在dns查询结束之前,浏览器不会下载该域名下的任何东西.所以减少dns查询的时间可以加快页面的加载速度. 2.通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的 cache服务器

也许是被误解的浏览器资源加载优化

几乎每一个前端程序员都知道应该把script标签放在页面底部.关于这个经典的论述可以追溯到Nicholas的 High Performance Javasript 这本书的第一章Loading and Execution中,他之所以建议这么做是因为: Put all <script> tags at the bottom of the page, just inside of the closing </body> tag. This ensures that the page c

移动应用性能优化技术[摘抄1]

http://www.51cto.com/ http://mobile.51cto.com/exp/apm/ 测试的执行过程是被监控的,在所有针对不同用户负载的应用程序响应被测试完之后,其结果也会对比事先定义好的服务水平协议得到全面的分析.性能测试工具可提供问题诊断功能,帮你找出根本原因从而快速解决. 七.移动应用性能优化技术 移动应用的性能优化技术取决于特定的应用极其瓶颈特性.我们在这里分享几个通用的优化移动应用性能的技巧: 减少客户端到服务器的HTTP请求数量,可以缩短页面加载时间 将Jav