页面缓存

秒杀页面优化(页面缓存+URL缓存+对象缓存) 页面优化技术 为什么要优化. 1.页面缓存+URL缓存+对象缓存 由于并发瓶颈在数据库,想办法如何减少对数据库的访问,所以加若干缓存来提高,通过各种粒度的缓存,最大粒度页面缓存到最小粒度的对象级缓存。 2.页面静态化,前后端分离 都是纯的html,通过js或者ajax来请求服务器,如果做了静态化,浏览器可以把html缓存在客户端。 3.静态资源优化 JS/CSS压缩,减少流量。(压缩版的js,去掉多余的空格字符。区别于阅读版)JS/CSS组合,减少连接数。(将多个JS和CSS的组合到一个请求里面去,一下子从 阅读详情

页面缓存

1          前言

页面缓存一直是前端开发中我们关注比较少的,研究了一些资料,总结了一些心得,记录下来共同探讨。

合理的页面缓存可以让页面执行的效率提高很多(在第一次访问或者CTRL+F5强制刷新的时候,缓存的效果是体现不出来的),而不是我们一味的设置cache-control为no-cache。

当然了如果缓存使用不当,也会带来麻烦,比如缓存参数设置不合理,会导致请求得到的是旧的页面元素。

2          缓存原理

首先一开始我们要明确页面缓存的原理以及过程。

缓存的原理大体是在浏览器对资源的第一次请求之后,把资源中的一部分存储在计算机的临时文件空间,再次请求的时候,按照特定的策略加载缓存的资源,减少HTTP请求次数与传输数据量,以此提高浏览效率。

以下是一个请求的过程讲解。

2.1      第一次请求

打开一个浏览器如IE,这时候浏览器会对自身设置的参数进行加载,其中就包括缓存设置参数。

接下来我们在地址栏输入一个url,这时候浏览器会发送一个简单的HTTP请求报文头给应用服务器,这个报文头主要包含的信息是请求的url,接受的编码约定,缓存控制等信息。

典型的请求报文头:

服务器接受到了请求报文头,一堆业务处理完毕之后,会给出HTTP响应报文,响应报文格式分为报文头和报文体,响应报文头中的信息是很重要的,我们以一个图片响应报文头为例讲解相关内容:

这个响应报文头可以看到以下信息:

  响应状态码是200,说明是正确返回。

  cache-control设定了有效时间,在这个时间内新打开新网页(或者地址栏回车)不需要去请求服务器。

报文内容类型是image/gif。

  最近修改时间是2008-7-30 10:23:00,最近修改时间在浏览器刷新的时候有很大的用处,浏览器刷新的时候,会发送对该图片请求的报文,得到的响应报文中如果最近修改时间和缓存的一致,那么浏览器将会从缓存中读取该图片的信息(状态码是304),如果两个时间不一致,会从服务器请求得到最新的文件,并缓存。

  服务器类型等其他信息。

该响应报文接受到之后,浏览器解读报文体内容,并打开显示给用户,这是主要的工作。

除此之外,浏览器还根据报文头的信息,确定一些缓存规则,比如no-cache的不缓存,设置了max-age的再次打开不请求等,更多的信息可以参考三、四章节。

2.2      再次请求

再次请求的时候,才是缓存显现身手的时候。

还是以上面请求的那个图片(设置了max-age)为例。

如果这个时候我们在地址栏按照原有url回车的话,针对该图片,是没有发送HTTP请求的,更没有请求服务器资源,浏览器直接从缓存空间读取该图片。

如果这个时候刷新,则是发送HTTP请求,得到以下的响应报文:

检查服务器,得知该文件没有修改,那么浏览器将从缓存中获取该图片。

3          缓存对象

页面缓存,主要缓存什么东西呢?我们首先要明确一下Content-Type的概念。

我们知道HTTP协议是类似MIME的消息结构,MIME类型是和文档的后缀名相关的,我们在请求服务器然后获取到数据,我们只得到了数据,并不知道文档后缀的名字(比如没办法区分css和js),这时候服务器必须使用附加的信息来告诉客户端数据的类型,服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,常见的有text/html、text/css、application/x-JavaScript、image/gif、image/jpeg、audio/x-mpegurl等,如果这些类型是浏览器能直接识别的,那么浏览器就直接打开显示出来,否则要关联注册表,找到对应的程序来打开,比如audio。

更多的内容可以百度一下MIME类型。

页面缓存缓存对象除了text/html之外,image/gif、image/jpeg的cache-control一般都通过设置max-age来实现缓存,application/x-javascript通过Last-Modified或者ETags来实现。

4          缓存规则

怎么来设定缓存呢?主要有以下三种手段:

4.1      默认缓存规则

应用服务器是有默认缓存规则的,比如缓存对象他content-type=text/html,应用服务器给出的默认响应报文头中,cache-control一般都设置为private。

常见的tomcat和weblogic默认缓存规则是存在差异的。当然这些应用服务器的默认缓存规则是可以通过配置来修改的。

4.2      单个设定

单个设定就是我们常见的,在html的meta区域设置cache-control,max-age,expires等。应用服务器在解析到这些参数之后,会在响应报文中明确指出,告诉浏览器当前页面的缓存规则。

具体内容可以参考《http meta 简介》。

4.3      批量设定

l  过滤器

对同一类页面元素实施相同的缓存策略,可以使用过滤器来实现,通过判定缓存对象类型,在相应中添加相同的缓存规则。

具体代码参考web.xml和ResponseHeaderFilter.Java。

l  eTags

参考http://www.infoq.com/articles/etags。

翻译版《使用ETags减少Web应用带宽和负载》。

5          IE重新浏览方式对缓存的影响

(这部分内容是自己测试的成果,相信存在误差。)

IE不同的重新浏览方式对应的数据请求是有差异的(都可以使用HttpWatch明确看到相应的报文内容)。

5.1      IE前进,后退

一般来说这种重新浏览方式数据都是取自缓存。

比如Cache-control设定为private、must-revalidate、max-age的内容。

Cache-control为no-cache,还需要再次请求服务器,因为这种情况是不会在浏览器缓存区留下任何痕迹。

5.2      IE转到/地址栏回车

这种情况是根据IE的设置来确定怎么访问数据,IE的Internet选项中Internet临时文件的设置有这么几个选项:每次访问网页时检查、每次启动IE时检查、自动(默认)和不检查,这几个选项的设定其实是影响发送的HTTP报文表头的。

仅仅看一下默认情况(自动),自动的话,IE查看指定网页的时候不检查上次已经查看过的这个网页是否已经发生改变(有点绕)。

比如text/html(private)依旧会去请求服务器数据,application/x-javascript等就不再请求服务器了,而是来自缓存。指定了max-age值的img也一样,不会再去请求服务器,直接取自缓存。

详细解读可以参考IE的帮助信息。

5.3      IE新窗口,如链接打开

如果页面指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。

如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器。

5.4      IE刷新

不管cache-control的为何值,都会检查服务器。

检查要访问网页的最新版本,如果存在最新版本,则返回最新网页的内容,并更新缓存;如果不存在最新版本,则只返回标题,内容去缓存中获取。

5.5      IE强制刷新(CTRL+F5)

获取要访问网页的服务器最新版本,返回最新的版本,并删除缓存中的相应内容,将最新的内容写入缓存。

其实强制刷新情况下,请求的HTTP报文头里,Cache-control为no-cache。

5.6      脱机工作

这是一种比较特殊的重新浏览方式,这种情况下是没有任何面向服务器的请求过程的,直接去浏览器的缓存寻找数据,如果缓存没有命中,脱机就没办法工作了。

显而易见的是,no-cache方式,是没办法脱机工作的。

页面缓存概述 人都知道浏览器将这个新特性称为Page Cache。Firefox将其称为“Back-Forward Cache”或“bfcache.” ,Opera则称其为“Fast History Navigation.” ,在WebKit的实现中我们称其为“Page Cache”, 以避免与“Back/Forward List.”的混淆。 注意,页面缓存是使用用户更加流畅地浏览网页的一个客户端特性。而 阅读详情

相关推荐

风控要略-互联网业务反欺诈之路(一)

当前中国互联网安全产业答题可以分为基础安全和业务安全两个领域。从互联网诞生至2014年,互联网安全行业关注的热点基本都聚焦在网络安全、系统安全和应用安全这个三大基础安全领域上,“DDOS“(分布式拒绝服务攻击)1、“漏洞“、“拖库“2和“挂马“3等大家耳熟能详的术语也是从这些领域中衍生出来的。2014年前后,随着互联网业务的爆炸式发展,黑产团伙开始从“攻击渗透系统“的传统套路进化到“利用业务风控确实进行大规模牟利“的模式,并且逐渐形成规模庞大、分工明确的黑色产业链。

Despacito1006的博客 1013

浏览器页面缓存 - Cache【性能篇】

如果【停用缓存】被勾选了,浏览器发送的请求中就会自带 Cache-Control:no-cache和Pragma:no-cache两个请求头。会强制要求缓存把请求提交给原始服务器进行验证 (协商缓存验证)。假如 Cache-Control 在请求头中不存在的话,Pragma:no-cache的行为与 Cache-Control: no-cache 一致。在Demo演示之前,切记将浏览器中的 【网络 -> 停用缓存】选项不要勾选。否则浏览器不会从本地缓存取数据。

问白的博客 2772

大模型辅助意图识别,更懂你的客户洞察平台

通过大量的学习和训练,大模型不仅具备庞大的知识库,更掌握着丰富的语言模式和语义规则,能够精准地理解每一段对话的含义,为每一通对话进行全面、准确的标注。主要来自客户的行为信息,将客户与机构的重要时刻以时间轴的方式呈现出来,掌握客户生命周期的完整脉络,识别一些容易被忽略的重要营销MOT(Moment Of Truth,关键时刻研究)机会,提示理财经理跟进处理。将客户的历史交易数据和埋点系统采集的客户行为数据结合起来,辅以部分内容资讯的偏好探测,综合分析和预测客户在各个维度的喜好程度,实现千人千面的客户推送。

Dezhuzhineng的博客 2161

页面缓存详解

在学习Swagger的时候刚开始使用Swagger3.x但是有些配置还是使用之前版本的,所以就一直报404,在查阅一些网上的资料后,(现在还不知道是版本配置问题)大多数都是让清除以下缓存,我知道怎么清除(平时的清除缓存一般指的是清除浏览器缓存),当然之前也零散的接触过一些关于缓存的知识,但是没有系统的整理过,今天就先来整理一些关于页面缓存的内容吧。首先在查阅资料中会出现页面缓存和web缓存这两种前端的缓存!但是实际上,页面缓存只是web缓存中的一部分。

m0_71973935的博客 1755

stm32驱动NRF24L01_原理+代码解析

NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。①2.4G全球开放的ISM频段,免许可证使用。②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。③126个可选的频道,满足多点通信和调频通信的需要。④内置CRC检错和点对多点的通信地址控制。⑤可设置自动应答,确保数据可靠传输。//NRF24L01寄存器操作命令。

zyc18700766982的博客 2万+

别再折腾环境了!Windows 11 + VSCode + CMake 3.31.4 + MinGW-w64 一键式配置指南(附常见报错解决)

本文提供Windows 11下VSCode、CMake 3.31.4和MinGW-w64的一键式配置指南,帮助开发者快速搭建高效C++开发环境。涵盖工具链选型、环境变量配置、项目初始化及常见报错解决方案,大幅提升开发效率。

weixin_28841265的博客 186

页面性能之浏览器缓存

缓存的分类: 一. 强缓存: 定义:强制缓存,只要在有效的时间范围内就不会去服务器发送请求索取资源,而是直接用本地缓存的。 主要http字段: Expires Expires: Mon, 25 Jun 2029 06:17:58 GMT Cache-Control Cache-Control: max-age=315360000 Expires和Cache-Control的区别: Expir...........................

EmotionComputer 1473

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6263

移动端H5页面的缓存问题

使用 HTTP 缓存头控制缓存: 可以使用 HTTP 头中的 "Cache-Control", "Expires" 或 "Last-Modified" 来控制浏览器缓存。当 H5 页面更新部署到 Nginx 服务器后,浏览器访问时可能出现空白页面,这是因为浏览器使用了缓存,导致页面加载的不是最新版本。前端页面缓存问题是指页面的静态资源(如图片、JS 和 CSS 文件)在浏览器中被缓存后,导致页面不能正确地更新或者加载最新的内容。清除浏览器缓存: 手动清除浏览器缓存,或者在浏览器中清除整站缓存。

风清扬的专栏 5472

Android 11.0 app添加校验锁(输入密码才能进入app)

11.0定制化开发中客户要求给app添加锁,就是点击app 图标时,会弹出Dialog,需要输入密码才能进入app中,就是应用校验锁, 最开始想到在Launcher3中实现,但是如果更换了默认Launcher 又不行了 所以最终还是得拦截app启动Activity 从这里入手了 Launcher与APP是在两个不同的进程中,他们之间的通信是通过Binder完成的,点击Launcher上的某个APP,这时会调用Launcher的startActivitySafely方法。 public boolean sta

安卓兼职framework和app工程师的博客 1953

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具,广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置,以高效监控服务,并确保系统的可靠性和可维护性。

颜淡慕潇 2万+

【前端页面缓存技术方案】

纯前端缓存页面数据技术方案

csdn__qiao的博客 2728

基于STM32L4XX、HAL库的DP83822 以太网收发器(PHY)驱动程序设计

一、简介:DP83822是德州仪器(TI)推出的一款低功耗、高性能10/100Mbps以太网物理层收发器(PHY)。它具有以下主要特性:支持10BASE-T和100BASE-TX以太网标准低功耗设计,适合嵌入式应用MII/RMII接口,方便与微控制器连接内置自检和诊断功能支持自动协商和手动配置工业级温度范围(-40°C至+85°C)

zhusl6688的博客 528

页面缓存与数据缓存

2018-1-25 ubuntu里pwd查看当前目录 什么是redis? redis的全称为remote dictionary server,即远程数据服务,缓存数据库是由意大利人开发的一款内存高速,是用C语言编写的,数据模型为key-value,它支持丰富的数据类型,比如string,list,hash,set,sorted set,它可以支持持久化,保证了数据的安全。 缓存的两种类型:

qq_34600424的博客 8084

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VUE 页面缓存与不需要缓存的页面处理

vue实现页面缓存,一般是缓存了所有的页面,如果不想缓存某一个页面可以使用一些判断实现。 缓存技术是 vue include 存放一个数组,include是需要缓存的组件 ``` <template> <div> <keep-alive :include="tagsList"> <router-view></router-view> </keep-alive> </div...

神夜空间 1940

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Nginx实现页面缓存

第一步:添加nginx.conf的http级别的缓存配置 ##cache## proxy_connect_timeout 500; #跟后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_read_timeout 600; #连接成功后_等候后端服务器响应的时间_其实已经进入后端的排队之中等候处理 proxy_send_timeout 5...

极客神殿 4322

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

缓存之页面部分缓存

介绍 有时缓存整个页面是不现实的,因为页面的某些部分可能在每次请求时都需要变化         在这种情况下,只能缓存页面的一部分。顾名思义,页面部分缓存是将页面部分内容保存在内存中,以便更快速响应用户请求,而页面其他部分内容则为动态内容。         采用页面部分缓存的技术下,经常采用先将那个页面缓存,然后替换页面中不需要缓存的部分的“缓存后替换”的方法         “缓存后替换

寂寞的一只狗的博客 696

php全页面缓存,php页面缓存

这几天接触了phpcms的页面缓存,有些感触。其好处就不多说了,它一般是用在数据库查询较多的页面中,对于插入修改删除的页面就不大合适了。这里有缓存技术的简单介绍:http://www.cnblogs.com/penghcn/articles/2720202.htmlphp页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents()下面是...

weixin_39881387的博客 192

jsp页面禁用缓存

A页面跳转到B页面后,按返回按钮,返回页面A后并没有继续处理,而是卡住了,原因是jsp页面被浏览器缓存了。因此需要禁用Jsp页面缓存。 正确的做法: <%@ page contentType="text/html;charset=UTF-8" %> <% response.setHeader("Pragma", "No-cache"); resp...

GAMELOFT9----纸上得来终觉浅,绝知此事要躬行 1224

十一、页面优化(页面缓存+URL缓存+对象缓存)

通用页面优化手段 页面缓存+URL缓存+对象缓存 并发的瓶颈在数据库,减少数据库访问的最有效方法是加缓存,最大粒度为页面缓存,最小粒度为对象缓存 页面静态化,前后端分离 将页面改成纯html,通过js,ajax来请求服务端,拉到数据渲染页面。做页面缓存,客户端需要从服务端下载数据;做页面静态化,浏览器可以把html缓存在客户端,页面数据不用重复下载,只需下载动态的数据。 静态资源优化 图片、CS...

lahhass的博客 500

页面缓存、URL缓存、对象缓存

页面缓存优化:这种缓存技术一般用于不会经常变动信息,并且访问次数较多的页面,这样就不用每次都动态加载。商品列表页 页面缓存:1.取缓存 ()2.手动渲染 3.结果输出Thymeleaf 的页面渲染技术。 @ResponseBody @RequestMapping(value = "/to_list",produces = "text/html") public String t...

weixin_38035852的博客 7740

微信h5页面缓存

微信h5页面缓存问题前言先说说之前开发的问题来看看现在的效果:因为我的分享页面是在一整个项目中的,默认就是采用的第一种方案,所以我直接修改了图片的名称,打包编译后上传js文件到服务器,得到的效果是: 前言 移动端开发中,经常会碰到微信缓存的问题,总体感觉而言,有太大的无可奈何,但是问题总归是要解决的。 先说说之前开发的问题 由于之前无论是公众号还是微信分享链接,都是经过充分测试后发布上线的,上线后...

woyidingshijingcheng的博客 9990

vue网页缓存页面与不缓存页面处理

【代码】vue网页缓存页面与不缓存页面处理。

weixin_39054337的博客 5934

java页面缓存oscache,基于OSCache的页面缓存

一、缓存整个页面在OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的压力,而且对于减少web服务器的性能消耗有很显著的效果。这种功能的实现是通过在web.xml中进行配置来决定缓存哪一个或者一组页面,而且还可以设置缓存的相关属性,...

weixin_29070721的博客 256

ASPX页面缓存

1,ASPX页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明 这样整个页面的内容都会被缓存,页面中的ASP.NET代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。 页面缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者、一次访问和100万次访问对数据库的压力是一样的。 Duration="60" 的意思是指定缓存的时间为60秒,可根据情

3773

JS 如何清除页面缓存

缓存有利于加快页面的加载速度,是实现高效web的一种方法,但是,有时,我们需要让页面不缓存,例如,升级,这样我们需要在页面中或者服务器做一些处理。 1.动态页面:index.asp?id=....  2.使用jquery,$.ajaxSetup({cache : false }); 3.在html里的head标签中加       另外一种:

vuturn的专栏 2万+
上一篇: 《代码大全》读书笔记
下一篇: tomcat如何刷到2000并发
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值