浏览器缓存

nginx配置及性能调优

爱⌒轻易说出口 提交于 2019-12-06 12:38:08
https://www.toutiao.com/i6765746230141125132/?timestamp=1575450096&app=news_article&group_id=6765746230141125132&req_id=201912041701360100260760263C04643 2.4、配置默认主页 location / { index index.html index.htm; autoindex off; } 2.5、配置反向代理 location / { proxy_pass http://localhost:8888; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 2.6、URL 美化(省略 index.html 入口文件) location / { try_files $uri $uri/ /index.html; } 2.7、upstream 代码块 upstream 代码块位于 http 代码块内部。 upstream 用于对服务器集群进行负载均衡的配置。 upstream name { ip_hash; server

django-浏览器缓存

情到浓时终转凉″ 提交于 2019-12-06 11:40:48
## 强缓存 **不会向服务器发送请求,直接从缓存中读取资源** 1,Expires **缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点** Expires=max-age + 请求时间 **Expires 是 HTTP/1 的产物,受限于本地时间,如 果修改了本地时间,可能会造成缓存失效** 2, Cache-Control 在HTTP/1.1中,Cache-Control主要用于控制网页缓存。比如当`Cache-Control:max-age=120 `代表请求创建时间后的120秒,缓存失效 横向对比 Expires VS Cache-Control #### 协商缓存 **协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程 1,Last-Modified和If-Modified-Since ​ 第一次访问时,服务器会返回 Last-Modified: Fri, 22 Jul 2016 01:47:00 GMT ​ 浏览器下次请求时 携带If-Modified-Since这个header , 该值为 Last-Modified ​ 服务器接收请求后,对比结果,若资源未发生改变,则返回304, 否则返回200并将新资源返回给浏览器 ​ 缺点:只能精确到秒,容易发生单秒内多次修改,检测不到 2,ETag和If

[网络] 在浏览器输入URL回车之后发生了什么

狂风中的少年 提交于 2019-12-06 10:59:02
目录 一 前言 二 URL解析 三 DNS域名解析 1 IP 地址 2 什么是域名解析 3 浏览器如何通过域名去查询 URL 对应的 IP 呢 4 小结 四 建立连接 1 TCP三次握手 2 SYN攻击 3 为什么不能用两次握手进行连接 五 发送HTTP请求 1 请求报文介绍   2 请求流程 六 服务器处理请求并返回 HTTP 报文 1. 服务器 2. MVC 后台处理阶段 3. HTTP响应报文 七 浏览器解析渲染页面 1 根据 HTML 解析 DOM 树 2 根据 CSS 解析生成 CSS 规则树 3 结合 DOM 树和 CSS 规则树,生成渲染树 4 根据渲染树计算每一个节点的信息(布局) 5 根据计算好的信息绘制页面 八 断开连接 1 四次挥手 2 为什么连接的时候是三次握手,关闭的时候却是四次握手? 3 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 回到顶部 一 前言   打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!      从URL输入到页面展现   总体来说分为以下几个过程:   (1)URL 解析   (2)DNS 解析:将域名解析成 IP 地址   (3)TCP 连接:TCP 三次握手   (4)发送 HTTP 请求   (5

在浏览器输入URL回车之后发生了什么?(超详细版)

≡放荡痞女 提交于 2019-12-06 10:57:44
前言   这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。   这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅, 注意: 本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。 大致流程 URL 解析 DNS 查询 TCP 连接 处理请求 接受响应 渲染页面 一、URL 解析   地址解析:     首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。   HSTS     由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。详见: 你所不知道的 HSTS [1] 。   其他操作     浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。   检查缓存      二、DNS 查询   基本步骤        1. 浏览器缓存     浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。   2. 操作系统缓存    

SpringBoot学习(七)—— springboot快速整合Redis

。_饼干妹妹 提交于 2019-12-06 10:44:29
目录 Redis缓存 简介 引入redis缓存 代码实战 Redis缓存 @ 简介 redis是一个高性能的key-value数据库 优势 性能强,适合高度的读写操作(读的速度是110000次/s,写的速度是81000次/s )。 支持较为丰富的数据类型(如二进制的Strings, Lists, Hashes, Sets ,Ordered Sets) 一定的事物能力(要么执行成功要么完全不执行)。 劣势 内存数据库访问快,但也消耗硬件内存资源 注:redis的单线程仅仅是说在网络请求这一模块上用一个请求处理客户端的请求,但比如说持久化它就会重开一个线程/进程去进行处理。 引入redis缓存 点击链接 下载 redis 的 window 版,下载好后,放入你平时放软件的位置,解压出来即安装完成。(需要注意的是放入的文件目录,当前用户要是可读可写的权限,比如window下的C:\Program Files (x86),这个目录默认只有管理员权限才能读写,redis运行时要在该目录下实时写入日志文件的,若无权限读写,则会操作不成功) 解压出来的目录如下所示,因为是Windows端的,可双击exe文件开启客户端,服务端。 因为这是 springboot 整合 redis 系列,所以双击打开服务端即可,别关闭打开的 cmd 窗口。 在pom.xml中加入 <dependency>

PHP cookie和session的分析

旧时模样 提交于 2019-12-06 09:55:40
PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP 在 http 协议的头信息里发送 cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。 1.1 设置 cookie : 可以用 setcookie() 或 setrawcookie() 函数来设置 cookie 。也可以通过向客户端直接发送 http 头来设置 . 1.1.1 使用 setcookie() 函数 设置cookie: bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] ) name: cookie 变量名 value: cookie 变量的值 expire: 有效期结束的时间 , path: 有效目录 , domain: 有效域名 , 顶级域唯一 secure: 如果值为 1, 则 cookie 只能在 https 连接上有效 , 如果为默认值 0, 则 http 和 https 都可以 . 例子 : < ? php $ value = 'something from somewhere

http缓存策略

做~自己de王妃 提交于 2019-12-06 09:35:45
http缓存策略 url输入后 首次访问 或 已清除缓存 时,(浏览器无缓存数据),(向服务器请求资源), 服务器在返回(资源)和(缓存策略) ,http状态码为200;客户端拿到后将数据和缓存策略缓存到浏览器。 缓存策略 存在于响应头里 , 缓存策略主要有: 强制缓存 和 协商(对比)缓存 , 缓存策略 缓存到浏览器 或者 强制缓存 服务器响应头会有2个字段来表示,expires/cache-control。 expires   http1.0的字段 , 现在浏览器默认使用http1.1 ,http1.1后使用 cache-control代替 是一个时间戳,代表资源过期时间。 例如:Expires:Sat, 23 May 2009 10:02:12 GMT cache-control (请求和响应都可以带cache-control ) Request Cache-Control "no-cache" "no-store" "max-age" "=" delta-seconds "max-stale" "=" delta-seconds "min-fresh" "=" delta-seconds "no-transform" "only-if-cached" Response Cache-Control "public" "private" "no-cache" "no-store

面试

最后都变了- 提交于 2019-12-06 09:09:25
面试 1、面试指导方针 在面试官问到技术的时候 是什么?有什么特点? what 为什么用它? why 在项目的哪一个地方用过? 使用的具体步骤?使用过程中问题总结? how 2、面试自我介绍之大套路 3、排序算法? 冒泡排序: 每次拿两个数进行比较,总是把小的放在最前面,大的放在最后面,第二次是第二个数和第三个数比较,如果第三个小于第二个,那么第三个和第二个替换位置,一次这样比较替换,第一轮循环完了呢,放在最后面的那个数就是这 一串数字中最大的数。第二轮循环和第一轮一样,第一个和第二个比较,最小的放在最前面,依次类推。如果有10个数字,那么就进行9次循环,最小的在最前面,最大的放在最后面。 好处呢,就是查询速度快 二分查找: 二分查找就是从一串数字中找到某个数字。 原理就是必须有一串数字是从小到大排序,把这串数字进行划分,分为三段,前半段,中止段,和中止后半段。查找数字或者字符先从中止段查找,查到的数字或者字符和中止正好相等,那么久直接取出来,如果比它大就从后半段查找,后半段在进行二分法,进行递归的调用查找,如果比中止小,走前面的中止段,在进行拆分,进行二分查找法。 4、说一下你对Spring的理解? 关于Spring的话,我们平时做项目一直都在用,不管是使用ssh还是使用ssm,都可以整合。Spring里面主要的就三点,也就是核心思想,DI,IOC,AOP。 DI就是依赖注入

java中常用的几种缓存类型

放肆的年华 提交于 2019-12-06 07:00:46
在平时的开发中会经常用到缓存,比如locache、redis等,但一直没有对缓存有过比较全面的总结。下面从什么是缓存、为什么使用缓存、缓存的分类以及对每种缓存的使用分别进行分析,从而对缓存有更深入的了解。 1.什么是缓存 在使用缓存前我们应该了解什么是缓存,下面是维基百科上面对于缓存的定义: 缓存是在计算机上的一个原始数据的复制集,以便于访问 缓存在计算机系统中被广泛应用,从缓存的定义来看,缓存是计算机上的原始数据的复制集,因此对于缓存的使用与应用场景密切相关,在不同的场景上会有不同的意义。 2.为什么使用缓存 首先对于互联网应用来说,用户体验是非常重要的,而 使用缓存的目的是想通过提高服务的性能从而提高应用的用户体验。 而系统性能的指标一般包括: 响应时间、延迟时间、吞吐量、并发用户数量和资源利用率等几个方面。 吞吐量:系统在单位时间内处理的请求的数量 3.缓存的分类 对于java程序开发者来说,根据缓存在软件系统中所处的位置的不同,缓存大体可以分为三类: 客户端缓存 服务端缓存 网络中缓存 下面主要针对客户端缓存和网络中缓存简单说明,并对服务端缓存做详细说明 3.1客户端缓存 对于BS架构的互联网应用来说客户端缓存主要分为页面缓存和浏览器缓存两种,对于APP而言主要是自身所使用的缓存。 3.2网络中缓存 网络中的缓存主要是指代理服务器对客户端请求数据的缓存

http请求缓存头详解

独自空忆成欢 提交于 2019-12-06 06:46:26
缓存的作用: 1.减少延迟(页面打开的速度)。 2.降低服务器负载(先取缓存,无缓存在请求服务器,有效降低服务器的负担)。 3.保证稳定性(有个笑话是手机抢购时为了保证服务器的稳定性,在前端写个随机数限制百分之二十的人发送数据到后台,这也侧面说明了缓存对于稳定性的作用)。 下图是自己画的,有点丑,请原谅!待会讲解! 浏览器与服务器进行通讯包含两部分: 1.请求头header(包含各种缓存信息)。 2.请求体bdoy(数据发送的主要内容) 页面缓存是由header决定的,包含四个参数: 一、Expires: http1.0推出的,指服务器返回的文件有效期,但其实这是有缺陷的,如果把本地的时间改为2118年,那Expires的时间怎么都会过期。 二、Last-Modified: http1.0推出的,指服务器文件的最后修改时间,浏览器会带上If-Modified-Since向服务器发送请求,与服务器文件修改时间Last-Modified做对比,如果时间不同,则获取数据返回200,否则返回304后调用浏览器本地硬盘的缓存。 这种方式也有问题,如果服务端文件频繁修改保存,那么Last-Modified就会频繁更改,每次都从服务端获取,这也就有了http1.1的修改。 从网上拿了个angular.js地址试了一下,第一次返回200,第二次刷新页面返回304。 时间:本地缓存获取>服务器获取