美文网首页前端优化
利用HTTP协议和浏览器缓存,减少数据读取时间

利用HTTP协议和浏览器缓存,减少数据读取时间

作者: ankerjian | 来源:发表于2016-09-02 18:46 被阅读359次

一般减少数据读取时间方法

1.合理建立关系型数据库索引

2.合理利用NOSQL数据库(如redis)存储数据,可以做到随机读取

3.利用缓存机制,把查询速度慢或者计算量比较大的结果集存储起来,并适当设置过期时间

4.优化SQL语句

其他方法,说明一下

众所周知,大多数浏览器客户端,为了减少网络延时,会利用本地缓存来加快二次加载的速度

缓存的对象一般有:媒体文件(jpg,gif等),样式文件,脚本文件等。

脚本文件运行所产生的文本其实也可以算是普通文本,那么对于实时性要求低的数据请求,我们绝对可以利用浏览器缓存来帮我们解决问题。

利用ETag响应头,返回304(not modified)

下面说明一下ETag的机制

====第一次请求===

1.客户端发起 HTTP GET 请求一个文件;

2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和已经开启了Etag).状态码200

====第二次请求===

1.客户端发起 HTTP GET 请求一个文件,注意这个时候客户端同时发送一个If-None-Match头,这个头的内容就是第一次请求时服务器返回的Etag:2e681a-6-5d044840

2.服务器判断发送过来的Etag和计算出来的Etag匹配,因此If-None-Match为False,不返回200,返回304,客户端继续使本地缓存;


利用Modified-Since响应头,返回304(not modified)

下面说明一下Modified-Since的机制

====第一次请求===

1.客户端发起 HTTP GET 请求一个文件;

2.服务器处理请求,返回文件内容和一堆Header,当然需要包括Modified-Since(例如Thu, 01 Sep 2016 11:19:33 GMT).状态码200

====第二次请求===

1.客户端发起 HTTP GET 请求一个文件,注意这个时候客户端同时发送一个If-Modified-Since头,这个头的内容就是第一次请求时服务器返回的If-Modified-Sinc:Thu, 01 Sep 2016 11:19:33 GMT

2.服务器判断发送过来的If-Modified-Since和文件Modified-Since的匹配,如果相等服务器返回304客户端利用缓存,否则返回200客户端缓存文件;

这是第二次请求图片


虽然动态脚本文件对于客户端来说没有修改时间一说,但是可以通过代码修改响应头中的Modified-Since属性,使动态脚本文件缓存能够被客户端直接缓存起来,直接减少网络请求时间。

下面是从网上摘抄的一段代码,同学们可以借鉴一下

private function _addEtag($file) {

        $last_modified_time = filemtime($file);

        $etag = md5_file($file);

        // always send headers

        header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");

        header("Etag: $etag");

        // exit if not modified

        if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time ||

        @trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {

                header("HTTP/1.1 304 Not Modified");

                exit;

        }

}

相关文章

  • 利用HTTP协议和浏览器缓存,减少数据读取时间

    一般减少数据读取时间方法 1.合理建立关系型数据库索引 2.合理利用NOSQL数据库(如redis)存储数据,可以...

  • 浏览器缓存原理

    背景:http1中利用缓存机制可以节约http请求数量,减少请求数据 弱缓存(协商缓存) 1.第一次请求,服务端通...

  • js基础常见问题总结(三)~

    web前端性能优化总结 浏览器访问优化 1、减少http请求,合理设置 HTTP缓存2、使用浏览器缓存3、启用压缩...

  • 页面性能

    资源压缩合并,减少http请求 非核心代码异步加载 --->异步加载的方法--->异步加载的区别 利用浏览器缓存-...

  • web性能优化

    减少HTTP请求、合并文件、利用css sprite 减少DNS查找 避免重定向 响应时间,使用ajax进项缓存,...

  • 浏览器缓存机制

    缓存意义 减少带宽,节约流量 及时响应 缓存类别 强制缓存 浏览器不会像服务器发送任何请求,直接从本地缓存中读取文...

  • 前端页面性能优化

    提升页面性能的方法 非核心代码异步加载 利用浏览器缓存 使用CDN 资源压缩合并,减少http请求 预解析DNS ...

  • 高并发考察点 --- 2021-11-13

    高并发优化案例:1.防盗链2.减少http请求3.浏览器缓存4.cdn5.数据库缓存(redis,memcache...

  • web前端性能优化总结

    1、减少http请求,合理设置 HTTP缓存2、使用浏览器缓存3、启用压缩5、LazyLoad Images6、C...

  • 页面性能

    提升页面性能的方法有哪些? 资源压缩合并,减少http请求 非核心代码异步加载 利用浏览器缓存 使用CDN 预解析...

网友评论

    本文标题:利用HTTP协议和浏览器缓存,减少数据读取时间

    本文链接:https://www.haomeiwen.com/subject/kvxkettx.html