缓存服务器

HTTP协议 (四) 缓存

拟墨画扇 提交于 2019-12-29 03:15:55
如何提高网站的性能 阅读目录 硬件方面 负载均衡 Web服务器方面 - CDN Web服务器方面 - 独立的图片服务器 Web服务器方面 - Gzip 压缩 Web服务器方面 - 缓存 减少HTTP请求 HTML 静态化 HTML 优化图片 硬件方面 购买更多的服务器, 使用高性能的CPU 和内存, 和带宽 Web服务器方面 - 负载均衡 使用load banance 来分担负载 Web服务器 CDN CDN的全称是Content Delivery Network,即 内容分发网络 用户“接近”你Web服务器的程度会影响响应时间。把内容部署在多个、地理位置分散的服务器上,会使页面加载的速度从用户角度看更快。但是我们应该从哪里开始? 作为实现地理位置分散内容的第一步,不要试图重新设计你的Web应用程序,使它运行在一个分布式的结构中。根据应用程序,改变结构,包括跨服务器同步会话状态和复制数据库事务等,这些艰巨的任务。根据不同的应用,改变结构可以包括跨服务器的位置同步会话状态和复制数据库交易等艰巨任务。尝试减少用户和内容之间的距离,可以延迟,或从不通过,这是应用程序结构的步骤。 记住,最终用户的80-90% 响应时间花费在下载所有页面的组件:图像、CSS、JS、Flash 等,这是提高性能的黄金法则。最好先分散你的静态内容,如图像、CSS、JS、Flash 等

MOD_EXPIRES安装和配置 提高网站速率

╄→尐↘猪︶ㄣ 提交于 2019-12-29 03:15:39
MOD_EXPIRES安装和配置 提高网站速率 实施这一方法将节省你难以置信数额的带宽,极大地加快你的网站为你的网站访客。基本上,对于图片,CSS , JavaScript以及其他文件可以通过优化更快的下载,告诉你的网站访问者快取记忆体,为他们在某一段时间内。默认的行为是每一次请求检查文件的 last-modified 和/或者 Etag headers。 所以一个用户去/home/index.html,及浏览器缓存所有图象和文件。然后用户离开网站稍后回来,与浏览器发送If-Modified-Since 有条件的GET 请求为每一个缓存的项目时,基本上看,如果文件已被改变和他们必须更新他们的缓存。 当你执行在这篇文章中所述的缓存方法,你可以指定某文件或扩展名被缓存为某一特定数额的时间。这些文件然后缓存在你的网站访客和他们不发送If-Modified-Since头直到设置的缓存时间已经到了。 #================================================= ============================# # TIME CHEAT SHEET #================================================= ============================# # 300 5 M # 604800

HTTP Headers解析

為{幸葍}努か 提交于 2019-12-29 03:15:01
什么是HTTP Headers? 它包含了哪些内容? 利用requests.get()函数对豆瓣读书进行请求, 返回的 r.headers 如下所示: >>> import requests >>> r = requests.get('https://book.douban.com/') >>> r.headers {'X-Powered-By-ADS': 'chn-shads-4-12', 'X-Xss-Protection': '1; mode=block', 'X-DAE-App': 'book', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'Set-Cookie': 'bid=ZT-mRsxMMX0; Expires=Mon, 23-Oct-17 03:11:40 GMT; Domain=.douban.com; Path=/, __ads_session=2Yy49z4EzghqOiuo9gA=; domain=.douban.com; path=/', 'Expires': 'Sun, 1 Jan 2006 01:00:00 GMT', 'Vary': 'Accept-Encoding', 'X-DAE-Node':

【前端必备】七、页面性能优化

折月煮酒 提交于 2019-12-29 03:14:04
1.文件优化 图片优化 一些修饰类图片可用CSS代替 将多个图标文件整合到一张图片中 (CSS Sprite) 选择正确的图片格式: gif无损压缩,适合logo、线条等小型简单图像 jpeg适合照片、渐变图像 PNG-8相对于GIF来讲有对alpha透明通道的支持,PNG-24会比JPEG,GIF,PNG-8占用更多的存储空间 svg适合简单的平面矢量形状,复杂的渲染时需要较多计算。 计算图片大小  对于一张 100 _ 100 像素的图片来说,图像上有 10000 个像素点,如果每个像素的值是 RGBA 存储的话,那么也就是说每个像素有 4 个通道,每个通道 1 个字节(8 位 = 1 个字节),所以该图片大小大概为 39KB(10000 _ 1 * 4 / 1024)。 其他文件优化 静态资源使用 CDN加载 重要的CSS文件放head中,其他可以放底部或动态加载 将耗时的js代码使用 Web Workers 执行 <script>标签 放在底部,避免阻塞渲染 动态脚本加载,向DOM中插入<script>标签 给标签加上 defer或async defer ,表示该文件会并行下载,但是会放到 HTML 解析完成后顺序执行。 没有任何依赖的JS文件可以加上async,表示加载和渲染后续文档元素的过程将和 JS 文件的加载与执行并行无序进行。 2.懒执行、懒加载、预加载、预渲染

在浏览器中输入一个网址后,发生了什么?

本小妞迷上赌 提交于 2019-12-29 00:38:22
这是面试中一道非常经典的问题。 当你在浏览器中输入一个网址,浏览器的处理过程如下: 第一步 浏览器查找该域名的 IP 地址 第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求 第三步 服务器收到请求并进行处理 第四步 服务器返回一个响应 第五步 浏览器对该响应进行解码,渲染显示。 第六步 页面显示完成后,浏览器发送异步请求。 下面对每个环节做进一步分析: 01 浏览器查找该域名的 IP 地址 浏览器缓存 首先是查找浏览器缓存,浏览器会缓存DNS记录一段时间,不同浏览器保存的时常不等(2分钟到30分钟不等)。 系统缓存 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用来查找这个网址的对应DNS信息。 路由器缓存 如果在系统缓存里没有找到找到对应的IP,请求会发向路由器,它一般会有自己的DNS缓存。 ISP DNS服务器 如果在路由器缓存里还是没有对应的IP,请求会被发送到ISP。 根域名服务器 如果还是没有,请求将发向根域名服务器进行搜索。找不到就说明此域名不存在。 02 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求 可能会重定向响应 例如“ http://facebook.com/ ”,服务器会给浏览器响应一个301永久重定向响应,这样浏览器就会访问“ http://www.facebook.com/ ” 而非“

HTTP协议 (四) 缓存

只愿长相守 提交于 2019-12-28 22:51:04
转载小坦克: https://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html HTTP协议 (四) 缓存 之前写过一个篇 【HTTP协议详解】 ,这次继续介绍HTTP协议中的缓存机制。HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助。 本文介绍浏览器和Web服务器之间如何处理"浏览器缓存",以及控制缓存的http header. 本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这工具,可以先参考 [Fiddler教程] 。在看本文的时候, 请务必打开Fiddler来实践。 阅读目录 缓存的概念 缓存的好处 Fiddler可以方便地查看缓存的header 如何判断缓存新鲜度 通过最后修改时间,判断缓存新鲜度 与缓存相关的header ETag 浏览器不使用缓存 直接使用缓存,不去服务器端验证 如何设置IE不使用缓存 公有缓存和私有缓存的区别 缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存。 数据库也有缓存, 等等。 http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。 http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本

高性能内存对象缓存memcached

家住魔仙堡 提交于 2019-12-28 17:42:30
一、memcached简介 1.memcached是基于内存级的缓存服务器,将所有的数据都存在内存中。因为在内存中会统一维护一张巨大的hash表,所以支持任意存储类型的数据 2.memcached是C/S架构,需要安装memcached服务端和memcached API客户端 3.主要作用: memcache主要用于分担数据库的负载压力,是缓存系统,所以严格意义上来说,memcache不是一个nosql的数据库,只是一个提供内存缓存功能的系统。那怎么理解别人说的memcache又是一个nosql数据库? 首选说明一下什么是nosql(泛指非关系型数据库),关系型数据是基于二维表(实体和实体之间的关系就叫做关系型数据库),而非关系型数据库不使用SQL语句作为查询,使用key-value这种数据结构保存数据的数据库,而memcache本身是没有使用SQL语句作为查询的,所以他是nosql库。 二、memcached原理 1.当Web客户端发送请求到Web服务器的应用程序时,应用程序会通过调用Memcached API客户端程序库接口去连接Memcached服务器,进而查询数据。如果此时Web客户端所请求的数据已经在Memcached服务端中缓存,则Memcached服务端会将数据返回给Web客户端;如果数据不存在,则会将Web客户端请求发送至MySQL数据库

缓存中间件-Memcache命令介绍

眉间皱痕 提交于 2019-12-28 14:25:57
1.美图 2.命令 您现现已经登录到 memcached 服务器。此后,您将能够通过一系列简单的命令来与 memcached 通信。9 个 memcached 客户端命令可以分为三类: 基本 高级 管理 2.1 基本 memcached 客户机命令 您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括: set add replace get delete 前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用清单 5 所示的语法: 2.2 修改命令语法 command 表 定义了 memcached 修改命令的参数和用法。 memcached 修改命令参数 参数 用法 key key 用于查找缓存值 flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) bytes 在缓存中存储的字节点 value 存储的值(始终位于第二行) 现在,我们来看看这些命令的实际使用。 2.3 set set 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。 注意以下交互,它使用了 set 命令: set userId 0 0 5 12345 STORED 如果使用 set 命令正确设定了键值对

高并发中nginx较优的配置

送分小仙女□ 提交于 2019-12-28 07:36:29
一、这里的优化主要是指对nginx的配置优化,一般来说nginx配置文件中对优化比较有作用的主要有以下几项: 1.nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。 worker_processes 8; 2.为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 3.下面这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是系统的最多打开文件数(ulimit-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。 worker_rlimit_nofile 65535; 4.使用epoll的I/O模型,用这个模型来高效处理异步事件 use epoll; 5.每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。 worker_connections 65535; 6.http连接超时时间,默认是60s,功能是使客户端到服务器端的连接在设定的时间内持续有效

【Nginx】Nginx配置文件详解

醉酒当歌 提交于 2019-12-28 02:37:15
00. 目录 文章目录 00. 目录 01. Nginx配置文件 02. Nginx配置文件详解 03. 参考 01. Nginx配置文件 不同的安装方法,可能导致配置文件的路径不一样 我的配置文件如下: # /usr/local/nginx/conf/nginx.conf 02. Nginx配置文件详解 ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx/logs/nginx.pid; #指定进程可以打开的最大描述符:数目 #工作模式与连接数上限 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 #现在在linux 2.6内核下开启文件打开数为65535,worker