php nginx 静态资源,Nginx实践篇(1)- Nginx作为静态资源web服务 - 静态资源压缩

一、静态资源web服务

1460000015873025?w=858&h=283

1. 静态资源类型

类型

文件类型

浏览器端渲染

HTML、CSS、JS

图片

JEPG、GIF、PNG

视频

FLV、MPEG

文件

TXT等其他下载文件

2. 静态资源服务场景-CDN

1460000015873026?w=757&h=340

二、静态资源核心配置

1. 文件读取 sendfile

sendfile 是一种高效传输文件的模式.

sendfile设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。

1460000015603267?w=609&h=371

1460000015603268?w=602&h=374

语法

Syntax: sendfile on | off;

Default: sendfile off;

Context: http, server, location, if in location

2. tcp_nopush

在 sendfile 开启的情况下,提高网络数据包的传输效率。

tcp_nopush指令,在连接套接字时启用Linux系统下的TCP_CORK。该选项告诉TCP堆栈附加数据包,并在它们已满或当应用程序通过显式删除TCP_CORK指示发送数据包时发送它们。 这使得发送的数据分组是最优量,并且因此提高了网络数据包的传输效率。

也就是说 tcp_nopush=on 时,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞,虽然有一点点延迟。

语法

Syntax: tcp_nopush on | off;

Default: tcp_nopush off;

Context: http, server, location

3. tcp_nodelay

在 keepalive 连接下,提高网络数据包的传输实时性。

tcp_nodelay选项和tcp_nopush正好相反,数据包不等待,实时发送给用户。

语法

Syntax: tcp_nodelay on | off;

Default: tcp_nodelay off;

Context: server, location

4. 压缩

开启压缩,可以加快资源响应速度,同时节省网络带宽资源。

1460000015873027?w=583&h=198

语法

开启关闭压缩

Syntax: gzip on | off;

Default: gzip off;

Context: http, server, location, if in location

压缩等级配置(压缩等级越高,越消耗服务器资源)

Syntax: gzip_comp_level level;

Default: gzip_comp_level 1;

Context: http, server, location

gzip协议版本配置

Syntax: gzip_http_version 1.0 | 1.1;

Default: gzip_http_version 1.1;

Context: http, server, location

压缩扩展模块

Syntax: gzip_static on | off | always;

Default: gzip_static off;

Context: http, server, location

Syntax: gunzip on | off;

Default: gunzip off;

Context: http, server, location

Syntax: gunzip_buffers number size;

Default: gunzip_buffers 32 4k|16 8k;

Context: http, server, location

三、静态资源压缩实例

1. vim /etc/nginx/conf.d/static.conf

server {

#开启sendfile,提高网络包的传输效率

sendfile on;

#配置txt|xml资源的路径

location ~ .*\.(txt|xml)$ {

#开启压缩

gzip on;

gzip_http_version 1.1;

gzip_comp_level 1;

gzip_types text/plain application/xml;

root /vagrant/doc;

}

}

2. nginx -s reload 重新载入nginx配置文件

3. 创建 /vagrant/doc/a.txt 文件,并查看文件大小

[root/etc/nginx]# curl http://www.sina.com.cn/ > /vagrant/doc/a.txt

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 557k 100 557k 0 0 488k 0 0:00:01 0:00:01 --:--:-- 488k

[root/etc/nginx]# ll /vagrant/doc/a.txt

-rwxrwxrwx 1 vagrant vagrant 558K 7月 11 10:57 /vagrant/doc/a.txt*

可见,a.txt 文件大小为 558K

4. 通过curl访问 192.168.33.88/a.txt,查看http响应头信息

[root/etc/nginx]# curl -I 192.168.33.88/a.txt -H Accept-Encoding:gzip,defalte

HTTP/1.1 200 OK

Server: nginx/1.14.0

Date: Wed, 11 Jul 2018 11:01:43 GMT

Content-Type: text/plain

Last-Modified: Wed, 11 Jul 2018 10:57:22 GMT

Connection: keep-alive

ETag: W/"5b45e292-8b47f"

Content-Encoding: gzip

从响应头信息中可看出服务器使用了gzip压缩

5. 通过浏览器访问 192.168.33.88/a.txt,使用开发者工具查看请求文件的大小

1460000015873028?w=356&h=81

可见,经过gzip压缩,请求文件由558K被压缩到148K,压缩比例很高。

6. 另外还可以通过nginx的access.log日志查看传输文件的大小

[root/etc/nginx]# tail /var/log/nginx/access.log

192.168.33.1 - - [11/Jul/2018:11:02:46 +0000] "GET /a.txt HTTP/1.1" 200 151549 "-" "Chrome/67.0.3396.99" "-"

可看出传输文件大小为 151549,单位是B,换算成KB约为148KB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome浏览器如何安装与使用PDFViewer扩展程序

chrome浏览器本身就有文档查看的功能,但是这个功能非常的简单,不支持文档的其他操作和演示,所有需要用户另外安装插件,这样在阅读文档的时候就会更加的方便,现在这些问题都可以通过这个软件完成,马上使用手…

php将get传参解析成数组,php解析url (parse_url) 参数成数组 (parse_str)

今天首先让我们为天津8.12大爆炸和陕西山阳山体滑坡遇难的同胞默哀3分钟,祝愿受伤的群众早日康复,脱离危险,希望国家严惩事故责任人,安抚受损群众。希望杯具以后不再发生……最近天灾人祸,大家出行一定要注意安全&…

Chrome浏览器可以修改特定页面背景色吗?Chrome浏览器修改特定页面背景色的方法

在使用浏览器的时候,长时间面对一个内容和颜色会很容易产生视觉疲劳,那么在这个时候,要如何更改浏览器的背景呢,用户可以将自己的浏览器背景设置一下,更改浏览器的背景颜色,让用户使用起来更加的方便&#…

mysql数据库名长可为64字符,MySQL数据库设计规范

1.数据库设计1.1库名1.库的名称尽量控制在32个字符以内,最长不超过64个字符,相关模块的表名与表名之间尽量体现join的关系,如user表和user_login表。库名建议不要使用MySQL保留字。如ic_u_payment_prod_db,为创新中心unex payment项目。2.库的…

优酷视频手机上能发现投屏设备,但投屏失败?

1、投屏失败的提醒如果是文件格式不兼容,则按文件格式不兼容解决; 2、并不是文件格式难题,移动端提醒连接失败,TV端无反映,提议在电视机或小盒子端安裝CIBN酷喵影视App,起动CIBN酷喵影视App,挑选“CIBN酷喵…

猛将赵云java,这五位三国猛将临危救主,赵云只能排第二位,第一位大家都服...

曹洪,曹子廉。是曹操的从弟,在《三国演义》小说中,最早跟随曹操起兵,虽然战斗力没有一流战将那么强悍,但是此人在曹操起兵讨伐董卓时,曹操在荥阳被徐荣打败,坐骑丢失。正要被徐荣士兵解决的时刻…

搜狐视频如何上传原创视频

很多人都使用搜狐视频,小编给大家分享一下搜狐视频如何上传原创视频相关内容。搜狐视频打造涵盖电影、电视剧、综艺、动漫在内的十余种类型的丰富的正版视频内容库,让搜狐视频进入真正意义上的全类别、高品质时代。搜狐视频是一款极速好用的视频播放软件…

用python画三维图、某区域的高程,python - 在PyQt中绘制具有高程和降低效果的3D矩形/多边形 - SO中文参考 - www.soinside.com...

据我所知,没有内置的PyQt 3D绘制小部件/功能,因为您只能绘制2D多边形。但我们可以创建一个自定义类来模拟3D绘画。从您的Java链接reference:Java支持3D矩形,但第三维的效果不是很明显。由于海拔较低,效果可以忽略不计。…

优酷APP下载视频不清晰怎么解决

视频软件我相信每个人手机上至少有一款吧,甚至更多,当我们做车没网的时候就看下载好的视频,但下载的不清晰,效果不好。那可能是没有去设置过下载时的清晰度,今天小编来和大家分享一下如何操作。 01、 首先&#xff0c…

oracle 视图带条件,Oracle视图可以进行DML操作的条件

条件一:在连接视图中不能有Order by、Group by、connetc by等语句排序语句。条件二:基础表中所有的NOT NULL列都必须在这个视图中。条件三:需要更新的列不是虚拟列。条件四:不能够具有分组函数。除了以上几个限制条件之外&#xf…

怎样下载优酷视频到电脑上播放

下载优酷视频上的视頻到电脑,有很多的方式,在其中有一种非常简单的,今日共享给大量的人了解。 01、 最先要进到优酷网   02、 在申请注册一个账户   03、 登录你申请注册的账户   04、 找到你喜爱的视頻,把电脑鼠标放到箭头…

oracle定时加载文件,采用sqlldr定时将文本文件加载进入数据库

需求:每个小时前台生成一个追踪文件,文件名格式为yyyymmddhh,存放在linux服务器上,要求每小时将上一个小时生成的文件导入数据库解决方案:采用sqlldr可以快速的将外部文本文件加载到数据库中,根据要求创建控制文件和sh…

腾讯视频客户端如何设置快进速度

今天小编给大家分享“腾讯视频客户端如何设置快进速度”。大家都知道腾讯视频作为中国最大的视频分享网站,它有非常全面的视频资源。而我们只要通过下载这个客户端,就可以完全的将这些视频尽收眼底,不再需要在页面上繁琐的操作。腾讯视频播放…

腾讯视频如何删除观看记录

今天小编给腾讯视频用户们分享“腾讯视频如何删除观看记录”,希望可以帮助大家。我们可以在腾讯视频播放器上,观看各种电视剧、电影、综艺节目等内容。里面的大部分视频都是免费的,部分独播大剧可能会存在vip收费的情况,这也是无法…

oracle的form开发,Oracle Form开发之调用Form

Form开发中经常会用到Form间相互调用的功能,总结了以下,大概有以下3种方法:方法1PROCEDURE shot_plan_new ISfm_id FormModule;BEGINfm_id : Find_Form(TVSNPMPSCRNMT);if id_null(fm_id) thenapp_form.open(TVSN,TVSNPMPSCRNMT);--Applicati…

7招改善你的谷歌chrome浏览器

核心提示:Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。 Google浏览器已经发布了几个星期,也许大多数人都已经听说过它,并已经下载使用过了。如果你喜欢用这款浏览器并且想进一步深入,这里有七个有用的特性可…

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析(续3)

马上就要进入2024年了,要参加2024年PMP一季度考试的小伙伴可以准备起来了。2024年的PMP考试将继续采用新考试大纲,考试内容包括PMBOK第六版、PMBOK第七版和敏捷实践指南,而且敏捷(或者叫混合)的项目环境将占比超过50%&…

oracle触发器更新语法,Oracle之前更新触发器

本Oracle教程解释了如何在Oracle中创建Before Update触发器的语法和示例。Before Update触发器表示Oracle将在执行更新操作之前触发此触发器。语法在Oracle / PLSQL中创建Before Update触发器的语法是:CREATE [ OR REPLACE ] TRIGGER trigger_nameBEFORE UPDATEON t…

实用:Google Chrome(谷歌浏览器)键盘快捷键大全

核心提示:关于Google Chrome键盘快捷键已整理出来,详细请看全文。 以下是整理的Google Chrome,键盘快捷键大全,Chrome为网页浏览设置了许多快捷键,许多复杂的鼠标操作可以用键盘轻松完成。 合理地使用快捷键可以让你的操作事半功…

前台等待事件 oracle,Oracle等待事件之buffer busy waits

产生原因官方定义:This wait happens when a session wants to access a database block in the buffer cache but it cannot as the buffer is "busy". The two main cases where this can occur are:Another session is reading the block into the buf…