Web 服务
Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。
Nginx配置文件结构
打开conf文件夹的nginx.conf文件,Nginx服务器的基础配置,默认的配置也存放在此。
在 nginx.conf 的注释符号为: # 默认的 nginx 配置文件 nginx.conf 内容如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
缓存是一种将经常使用的数据或信息存储在本地内存中一段时间的技术。因此,下次客户端请求相同的信息时,不再从数据库中检索信息,而是从本地内存中获取信息。缓存的主要优点是它通过减少处理负担来提高性能。
CDN
CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。尽管使用 CDN 的好处因 Internet 资产的规模和需求而异,但对大多数用户而言,主要好处可以分为 4 个不同的组成部分:
- 改善网站加载时间- 通过使用附近的 CDN 服务器(以及其他优化)将内容分发到更靠近网站访问者的位置,访问者可以体验更快的页面加载时间。由于访问者更倾向于点击离开加载缓慢的网站,CDN 可以降低跳出率并增加人们在网站上花费的时间。换句话说,网站速度越快,访问者停留时间越长。
- 降低带宽成本——网站托管的带宽消耗成本是网站的主要支出。通过缓存和其他优化,CDN 能够减少源服务器必须提供的数据量,从而降低网站所有者的托管成本。
- 增加内容的可用性和冗余——大量的流量或硬件故障会中断正常的网站功能。由于其分布式特性,与许多源服务器相比,CDN 可以处理更多流量并更好地承受硬件故障。
- 提高网站安全性- CDN 可以通过提供DDoS 缓解、安全证书改进和其他优化来提高安全性。
Server Side
服务器端缓存将 Web 文件和数据临时存储在源服务器上,以备后用。
当用户第一次请求网页时,网站进入正常的从服务器获取数据的过程,生成或构建网站的网页。在请求发生并且响应被发回后,服务器复制网页并将其存储为缓存。下次用户重新访问该网站时,它会加载已保存或缓存的网 页副本,从而加快访问速度。
服务器端缓存的主要问题是延迟。延迟可以定义为数据包从源行进到目的地的总时间。高延迟意味着用户请求和服务器响应的显着延迟。服务器端缓存的另一个问题是,如果网页上的数据发生变化,服务器必须从头开始重建。
Client Side
客户端缓存通常称为浏览器缓存,浏览器缓存也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。
尽管客户端缓存是一个稍微宽泛的术语。其运行原理如:一旦浏览器从服务器请求数据,它就会将其存储到浏览器创建的文件夹中。 下次打开网页时,它不会调用服务器获取数据,而是从浏览器缓存文件夹中提取数据。
客户端缓存的缺点之一是它是特定于浏览器的,如果你使用多个浏览器,那么同一个网页就会有不同的缓存文件。客户端缓存的另一个缺点是它比服务器端缓存更复杂。
面试常问
浏览器具体的缓存策略有哪些?
具体的缓存策略,分为强缓存和协商缓存两种。