如何在Nginx中使用HTTP缓存来缓存静态资源

2,301 阅读5分钟

作为一个Nginx 管理员,你总是寻找新的方法来提高网站服务器的性能。这种寻找会把你带入各种途径,最后,你会在无穷无尽的解决方案中迷惑不解,无法选择。

启用静态资源内容缓存Nginx 优化的一个可能方法。每当浏览器访问一个网站时,Nginx将特定文件(如静态图像资产)的缓存卸载给各个网络浏览器,而不是为每个文件提供服务。因此,由Nginx驱动的网站在浏览器中的加载速度更快。

在这篇文章中,你将学习如何在Nginx中使用HTTP缓存来缓存静态资源。在进入静态内容缓存程序之前,首先要了解静态内容的基本概念,以及静态内容在Nginx中是如何缓存的。

什么是静态内容

任何存储在服务器上的文件,每次都以同样的方式提供给用户,这就是所谓的静态内容。静态内容的功能类似于一份报纸。由于一份报纸的出版,每一个拿起一份报纸的人都会整天看到相同的故事和照片,无论白天发生什么新的事件。

大多数网站的内容是基于预先格式化的静态文件。这些静态文件不可能随着时间的推移而改变,对其他用户也是如此。与根据数据库信息 "即时 "生成的动态文件相比,静态文件是默认的缓存对象。静态内容的例子有图片、音乐、javascript、电影和CSS文件。

如何在Nginx中缓存静态资源

网络缓存的典型方法是在缓存中保存一份静态文件的副本。这个过程让静态内容更接近网站用户,并在下次更迅速地提供静态资源。静态内容或资源可以由内容交付网络(CDN)和浏览器在预定的时间内进行缓存,只要该静态资源被请求,就可以提供给用户。由于静态内容不随时间变化,用户可以多次收到相同的文件。

什么是Nginx的HTTP缓存头?

为了定义缓存持续时间和指示可缓存的网页内容,网站开发人员利用HTTP缓存头。你可以通过使用不同的缓存头来定制你的缓存策略,确保静态内容或资源的新鲜度。

例如,"Cache-Control: max-age=3600"声明特定文件只能被缓存一小时,之后必须从源头重新加载。分别给单个或一组文件打上标签可能会很费时。通过实施能够覆盖缓存头的认知方法,现代CDN允许你避免这种做法。

现在,我们将向你展示如何在Nginx中使用HTTP缓存启用静态缓存。如果你的网站包括许多静态资源或内容,那么所提供的方法将帮助你加快网页的加载速度。要遵循下面给出的方法,你需要在系统中安装并启用Nginx。

如何在Nginx中使用HTTP缓存启用静态资源缓存

首先,按 "CTRL+ALT+T"打开终端。然后,执行下面的命令,在nano编辑器中打开Nginx的配置文件。

$ sudo nano /etc/nginx/nginx.conf

我们在默认的Nginx文件中启用静态缓存。如果你有多个虚拟主机和站点,那么你必须在每个配置文件内添加以下设置。

添加以下几行来缓存静态资源,如css文件、图片、图标、JavaScript文件。

location ~* \.(css|gif|jpg|js|png|ico|otf|sng|xls|doc|exe|jpeg|tgx)$ {

    access_log off;

    expires max;

}

我们添加了 "access_log off",以禁用未达到I/O限制的access log off。而 "expires"头包括与浏览器缓存内容的可用性有关的信息。"expires"是一个HTTP头,可以放在配置文件中的块中,如server{}、http{}和location{}块。通常情况下,"expires"HTTP头被添加到location块中,用于缓存静态文件。

现在,按 "CTRL+O"保存我们在Nginx配置文件中所作的修改。

用"-t"选项执行 "nginx"命令,测试Nginx 配置文件及其语法。

$ sudo nginx -t

现在,在终端输入下面的命令,重新启动Nginx。

$ sudo systemctl restart nginx

如何在Nginx中使用HTTP Header Live测试静态资源的缓存

对于运行在Nginx 网站服务器上的网站,你可以在浏览器中添加HTTP头实时扩展,以测试缓存过程。

例如,我们通过点击 "添加到Firefox "按钮,在Firefox浏览器中添加HTTP Header Live。

允许HTTP Header Live访问网站和浏览器相关数据。

接下来,打开你的网站,你已经在其配置文件中启用了静态内容缓存,你会看到HTTP Header正在显示所有与缓存资源有关的信息。

你也可以按 "CTRL+SHIFT+I"来打开开发者工具。将你的网站加载几次,你会发现网页的加载速度有了很大的提高,因为大部分的资源在网页第一次加载时就被缓存了。

总结

在一个网站上,静态内容是一种不在不同网页上改变的内容。如果你的网站包括静态资源或内容,你可以通过启用缓存来提高其性能,缓存可以存储静态内容,以便在浏览器中快速访问。在这篇文章中,我们解释了什么是静态内容静态缓存在Nginx中是如何工作的,以及你可以在Nginx中使用HTTP缓存来缓存静态资源或内容。此外,我们还演示了如何使用HTTP Header Live测试静态资源的缓存