缓存服务器

转:Http头介绍:Expires,Cache-Control,Last-Modified,ETag

女生的网名这么多〃 提交于 2019-12-27 06:28:27
Http头介绍:Expires,Cache-Control,Last-Modified,ETag 缓存分很多种:服务器缓存,第三方缓存,浏览器缓存等。其中浏览器缓存是代价最小的,因为浏览器缓存依赖的是客户 端,而几乎不耗费服务器端的资源。 让浏览器做缓存需要给浏览器发送指定的Http头,告诉浏览器缓存多长时间,或者坚决不要缓存。 1.Expires(过期时间) HTTP头信息Expires(过期时间) 属性是HTTP控制缓存的基本手段,这个属性告诉缓存器:相关副本在多长时间内是新鲜的。过了这个时间,缓存器就会向源服务器发送请求,检查文档是否被修改。几乎所有的缓存服务器都支持Expires(过期时间)属性; 大部分Web服务器支持你用几种方式设置Expires属性;一般 的:可以设计一个绝对时间间隔: 基于客户最后查看副本的时间(最后访问时间)或者根据服务器上文档最后被修改的时间; Expires 头信息:对于设置静态图片文件(例如导航栏和图片按钮)可缓存特别有用;因为这些图片修改很少,你可以给它们设置一个特别长的过期时间,这会使你的网站对 用户变得相应非常快;他们对于控制有规律改变的网页也很有用,例如:你每天早上6点更新新闻页,你可以设置副本的过期时间也是这个时间,这样缓存 服务器就知道什么时候去取一个更新版本,而不必让用户去按浏览器的“刷新”按钮。

HTTP请求的缓存(Cache)机制

我的未来我决定 提交于 2019-12-27 06:06:14
原文地址:http://small.aiweimeng.top/index.php/archives/58.html 先来一张图: #### 下面简单的来描述一下HTTP Cache机制 : 当资源资源第一次被访问的时候,http status返回200,在头部携带当前资源的描述信息,eg: 最后修改的时间:```Last-Modified``` 资源状态唯一标识:```Etag``` 资源在客户端缓存的过期时间:```Expires``` 同时浏览器会将资源缓存到cache目录,并保存文件描述信息。 当客户端第二次请求资源时,会先检查cache目录中是否含有该资源,如果有,并且还没到Expires设置的时间, 即文件还没有过期,那么此时客户端将直接从Cache目录中读取文件,而不再发送请求 如果资源已经过期,客户端会发送一次http请求到服务器,同时在header携带上次修改的时间: ```text If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT If-None-Match "8fb8b-14-4794674acdcc0" ``` #### 为什么会返回上一次的信息呢? web服务器在接收到请求时,会先解析header里面的信息,然后校验头部信息。 如果该资源文件从上次时间到现在都没有修改或者Etag信息没有变化,

高并发库存扣减优化

拈花ヽ惹草 提交于 2019-12-27 01:43:48
背景 库存是电商中的一个核心概念,主要记录商品的可售等数量信息,其既简单又复杂,简单是因为它大多数时候就是提供一个商品是否可售的信息,下单扣库存,退款或则入库加库存就行了,因此从业务的角度上的确不算复杂。为什么复杂?因为在分布式高并发库存的性能上来说是需要考虑很多的,由此而展开的一系列的优化又会使简单的业务操作变的实现上异常复杂。本文介绍接触到一些库存上的优化,也会参照业界的最佳实践与设计模式探讨更好的实践与方案。 常见问题的解决手段 本文不详细介绍一些常规的优化操作,但是简单介绍一下,网上的文章很多可以自行搜索。 首先缓存能够优化查询,把热点数据加载到redis,这样能避免大的查询流量给数据库的压力,而且redis的内存操作也更快,一般来说redis一个实例可以抗10w的qps。但是值得注意一点就是尽量避免大数据的缓存,因为使用的单线程多复用非阻塞的IO模型,对于大的数据还是会阻塞读取到用户态,因此要注意不要缓存大的value值。 扣减库存有几种方式,最简单就是查询库存够不够再进行查询,但是这样存在超卖的风险,因此可以进行加锁,这样能解决但是并发性并不好,可以在SQL层做一个乐观锁,UPDATE stock SET avail_count - #{count} WHERE avail_count > 0 AND sku_id=#{skuId}即可

最全的Redis解析,赶紧收藏

扶醉桌前 提交于 2019-12-26 22:49:27
在这篇文章中,我们将彻底了解 Redis 的使用场景、Redis 的五种数据结构,以及如何在 Spring Boot 中使用 Redis,文章的最后还会列举面试过程中经常被问到的关于 Redis 的问题以及其解决方案。 Redis 简介 Redis 是一个开源(BSD 许可)、内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合等数据类型。内置复制、Lua 脚本、LRU 收回、事务以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。在实际的开发过程中,多多少少都会涉及到缓存,而 Redis 通常来说是我们分布式缓存的最佳选择。Redis 也是我们熟知的 NoSQL(非关系性数据库)之一,虽然其不能完全的替代关系性数据库,但它可作为其良好的补充。 Redis 使用场景 微服务以及分布式被广泛使用后,Redis 的使用场景就越来越多了,这里我罗列了主要的几种场景。 分布式缓存 :在分布式的系统架构中,将缓存存储在内存中显然不当,因为缓存需要与其他机器共享,这时 Redis 便挺身而出了,缓存也是 Redis 使用最多的场景。 分布式锁 :在高并发的情况下,我们需要一个锁来防止并发带来的脏数据,Java 自带的锁机制显然对进程间的并发并不好使,此时可以利用

HTTP协议小记

冷暖自知 提交于 2019-12-26 19:03:13
应用层上的协议非常重要的一个协议是HTTP协议。 这个协议包括了请求和回复两种报文类型。 请求和回复报文的内容形式是 1)起始行 2)首行 3)消息体 请求报文的内容格式是 <version><request-url><method> <headers> <entity-body> 回复报文的内容格式是 <version><status><reason-pharse> <headers> <entity-body> 报文中标签代表的含义是 method:指请求方法,主要的方法为GET和POST。 request-url:指请求路径/地址 version:指协议版本,现在通常是http/1.1   status:指响应状态码,主要的响应状态例如200,404。 reason-pharse:原因短语,200 Ok、404 No Found 这种后面描述的就是原因短语,不必太过关注。 method 请求方法使用频繁的是Get和POST。面试的时候通常被问到这两个方法有什么区别。这里我们来谈一谈。 GET和POST在传输形式上有一些差异。GET请求时,会在request-url地址后拼接参数,格式是url?parm1=ss&parm2=dd。 所以,这样的形式会在地址栏中暴露参数。由于url地址采用ASCII编码,如果参数中有Unicode编码的字符,例如汉字,需要转码后传输。

OkHttp3源码详解之HTTP重定向&缓存的处理(二)

坚强是说给别人听的谎言 提交于 2019-12-26 17:11:01
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将继续从以下两个内容来解析OkHttp3源码: [HTTP重定向] [缓存的处理] 一、HTTP重定向 1.1 重定向 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。 ----百度百科 1.2 原理 在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载;大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。 ​ image 不同类型的重定向映射可以划分为三个类别:永久重定向、临时重定向和特殊重定向。 1.3 永久重定向 这种重定向操作是永久性的。它表示原 URL 不应再被使用,而应该优先选用新的 URL。搜索引擎机器人会在遇到该状态码时触发更新操作,在其索引库中修改与该资源相关的 URL 。 注意了:浏览器自动重定向,不管代码怎么写都会自动重定向到第一次你永久重定向的URL,没办法,这时候你只能清楚浏览器缓存 编码 含义 处理方法

关于java的DNS解析IP缓存问题

我们两清 提交于 2019-12-26 16:54:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> java对DNS解析IP进行缓存,默认缓存超时时间为-1(在重启JVM前永久缓存), 在第一次访问某域名后将会缓存解析到的IP地址,之后直接从缓存里获得所需的信息(如IP地址),而无需再访问DNS服务器, 但如果在进行支付的时候DNS解析IP的地址有变更的话,提交的地址仍为原解析的IP地址,这将会访问到无效的IP地址而无法进行支付 建议在java虚拟机的设置中将缓存的时间设置为较小的时间,例如1分钟(60秒) 由于是全局的变量,在设置后会影响所有的应用程序,请先衡量一下对您平台所有的应用程序是否有影响后再进行设置 设置方法: 在命令启动JVM的时候设置参数"-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60" 例如:运行Test.class java -Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60 Test Resin 第一个方式: 修改resin.conf,在 <server-default>下,添加如下配置即可 <jvm-arg>-Dnetworkaddress.cache.ttl=60</jvm-arg> <jvm-arg>-Dsun.net.inetaddr.ttl=60</jvm

一次dns缓存引发的惨案

元气小坏坏 提交于 2019-12-26 14:45:25
时间2015年的某个周六凌晨5点,公司官方的QQ群有用户反馈官网打不开了,但有的用户反馈可以打开,客服爬起来自己用电脑试了一下没有问题,就给客户反馈说,可能是自己网络的问题,请过会在试试。早点8点,越来越多的用户反馈官网无法打开,并且有部分用户开发反馈app也打不开了,客服打电话叫起了还在梦乡中的我。 分析定位 被客服叫起来之后,一脸懵逼,不知道什么情况,给客服回复,知道了,立刻排查,待会有消息及时沟通。用凉水洗了一把脸清醒了一下,立刻根据经验回忆这两天生产投产的情况:上线了XX模块,不影响、修复了XXbug,应该也不影响、刚给服务器配置了https,看起来好像有点关系,但是app暂时没有投产https,怎么也出现问题,排除之。打开电脑核查了最近的投产记录应该都不至于发生这么严重的问题,随怀疑是不是网络方面有问题,立刻打电话叫起来运维经理以及相关人等一起排查。 一边让网络和运维排除问题,一边再次核查了web服务器、数据库服务器、业务日志、数据库日志,以及其它的一些监控数据,各项皆正常。试着在本机ping了一下域名确实不通,更加怀疑是网络问题,尝试这直接使用外网访问官,可以打开没有问题,可以基本确认服务没有问题,但运维部反馈网络设备什么都正常,肯定是你们投产代码出问题了,各方硬着头皮继续在排查。 9点,群里开始有大规模的用户反馈官网和app都打不开了,更有部分用户煽动

mysql 监控及优化——转载自http://www.cnblogs.com/suansuan/

孤者浪人 提交于 2019-12-26 08:14:43
1、Mysql连接数   Mysql默认最大连接数为100。   设置Mysql的最大连接数,在Mysql的配置文件中增加:   max_connections = 1000               #Mysql的最大连接数,默认如果不写的话是100个   wait_timeout = 10               #超时时间   配置文件路径:    (/etc/my.cnf 系统自带) (/opt/lampp/etc/my.cnf 安装Mysql 路径)   查看当前有多少个连接   show status like '%Threads_connected%';  #查看当前连接数   show processlist;            #也可查看锁表 2、Mysql缓存   Query Cache缓存的是sql语句对应的结果集,InnoDB_Buffer_Pool中缓存的是表中的数据。Buffer_Pool是设置的越大越好,一般设置为服务器物理内存的70%。   缓存1(MySQL层):查询缓存 Query Cache     ①.查询表里的数据有变化,之前的缓存失效。     ②.查询语句必须一模一样,才能用查询缓存;只要字符大小写或者注释等有一点点不同,都不可以用查询缓存。     ③.任何一个包含不确定的函数(比如now(),current_date()

1. B/S网络概述

旧时模样 提交于 2019-12-26 01:05:10
B/S网络架构 随着Web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变到更加方便快捷的B/S架构。这样的转化简化了人们上网的方式,也加速了互联网行业的发展。 B/S架构的好处: 1.客户端使用统一的浏览器(Browser)。因为浏览器是统一的,所以用户的使用难度大大的降低了,而且对于开发者来说也可以降低学习成本。 2.服务端(Server)基于统一的HTTP协议。HTTP是一种无状态的连接,请求完成后断开。全世界的互联网服务都基于统一打招呼的方式,这种方式更加便捷,效率更高。 当用户输入www.taobao.com的时候这个URL的时候,将会发生很多的操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据z合格IP地址在互联网上找到对应的服务器,向这个服务器发一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。服务器也可以是有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求;还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源文件(如css、js或者图片)时又会发起另外的HTTP请求,而这些请求很可能会在CDN上,那么CDN服务器又会处理这个用户的请求,用户发起一个请求大概有这么多的过程,如果有哪个节点出现了问题