Nginx cache usage

Dec 26, 2019 pm 03:07 PM
nginx

Nginx cache usage

A web cache sits between the client and the "origin server" and keeps a copy of all visible content. If a client requests content that is stored in the cache, the content can be obtained directly from the cache without communicating with the server. (Recommended learning: nginx use )

This way, because the web cache is "closer" from the client, it can improve the response performance, and more efficiently use applications and apply it more efficiently. Server, because the server does not need to generate the page for every request.

Between the browser and the application server, there are multiple "potential" caches, such as: client browser cache, intermediate cache, content delivery network (CDN) and load balancing and reverse proxy on the server . Caching, just at the level of reverse proxy and load balancing, can be a big help in improving performance.

For example, last year, I took over a task, which was to optimize the performance of a website that was loading slowly.

The first thing that caught my attention is that this website took almost more than 1 second to generate the home page. After a series of debugging, I found that the reason for the slow loading was that the page was marked as non-cacheable, that is, the page was dynamically generated in response to every request.

Since the page itself does not require frequent changes and does not involve personalization, it is not necessary to do so.

In order to verify my conclusion, I marked the page to be cached every 5 seconds. Just by making this adjustment, I can obviously feel the performance improvement. The time to the first byte is reduced to a few milliseconds, and the page loads significantly faster.

It's not just large-scale content delivery networks (CDNs) that can benefit from using caching - caching can also improve the performance of load balancers, reverse proxies and application server front-end web services.

Through the above example, we see that caching content results can use the application server more efficiently because there is no need to do repeated page generation work every time. In addition, web caching can also be used to improve website reliability.

When the server is down or busy, instead of returning an error message to the user, it is better to configure NGINX to send the cached content to the user. This means that the website can maintain some or even all functions in the event of application server or database failure.

How to install and configure the basic cache

We only need two commands to enable the basic cache: proxy_cache_path and proxy_cache. proxy_cache_path is used to set the cache path and configuration, and proxy_cache is used to enable caching.

proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m

use_temp_path=off;

server {

...

location / {

proxy_cachemy_cache;

proxy_pass http://my_upstream;

}

}
Copy after login

1. The local disk directory used for caching is /path/to/cache/

2.levels sets a two-level hierarchy directory in /path/to/cache/ .

Placing a large number of files in a single directory can cause slow file access, so for most deployments, we recommend a two-level directory hierarchy. If the levels parameter is not configured, NGINX will place all files in the same directory.

3.keys_zone sets up a shared memory area, which is used to store cache keys and metadata, somewhat similar to the use of timers.

Putting a copy of the key into memory allows NGINX to quickly decide whether a request is a `HIT` or a `MISS` without retrieving the disk, which greatly improves the retrieval speed.

A 1MB memory space can store approximately 8,000 keys, so the 10MB memory space configured above can store almost 80,000 keys.

4.max_size sets the upper limit of the cache (10G in the above example). This is optional; not specifying a value allows the cache to grow and consume all available disk space.

When the cache reaches this limit, the processor calls the cache manager to remove the least recently used files, thus reducing the cache space to below this limit.

5.inactive specifies the time the item can be kept in memory without being accessed. In the above example, if a file is not requested within 60 minutes, the cache manager will automatically delete it from memory, regardless of whether the file has expired. The default value of this parameter is 10 minutes (10m).

Note that inactive content is different from expired content. NGINX will not automatically delete expired content specified by the cache control header (Cache-Control:max-age=120 in this example).

Expired content will be deleted only if it has not been accessed within the specified time of inactive.

If expired content is accessed, NGINX will refresh it from the original server and update the corresponding inactive timer.

6. NGINX will initially put the files destined to be written to the cache into a temporary storage area. The use_temp_path=off command instructs NGINX to write these files to the same directory when caching them.

We strongly recommend that you set the parameter to off to avoid unnecessary data copies in the file system. use_temp_path was introduced in NGINX version 1.7 and NGINX Plus R6.

Finally, the proxy_cache command starts caching content whose URL matches the location part (in this case, `/`). You can also add the proxy_cache command to the server section, which will apply the cache to all services whose locations do not specify their own proxy_cache command.

The above is the detailed content of Nginx cache usage. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to start nginx in Linux How to start nginx in Linux Apr 14, 2025 pm 12:51 PM

Steps to start Nginx in Linux: Check whether Nginx is installed. Use systemctl start nginx to start the Nginx service. Use systemctl enable nginx to enable automatic startup of Nginx at system startup. Use systemctl status nginx to verify that the startup is successful. Visit http://localhost in a web browser to view the default welcome page.

How to solve nginx403 error How to solve nginx403 error Apr 14, 2025 pm 12:54 PM

The server does not have permission to access the requested resource, resulting in a nginx 403 error. Solutions include: Check file permissions. Check the .htaccess configuration. Check nginx configuration. Configure SELinux permissions. Check the firewall rules. Troubleshoot other causes such as browser problems, server failures, or other possible errors.

How to configure nginx in Windows How to configure nginx in Windows Apr 14, 2025 pm 12:57 PM

How to configure Nginx in Windows? Install Nginx and create a virtual host configuration. Modify the main configuration file and include the virtual host configuration. Start or reload Nginx. Test the configuration and view the website. Selectively enable SSL and configure SSL certificates. Selectively set the firewall to allow port 80 and 443 traffic.

How to check whether nginx is started How to check whether nginx is started Apr 14, 2025 pm 01:03 PM

How to confirm whether Nginx is started: 1. Use the command line: systemctl status nginx (Linux/Unix), netstat -ano | findstr 80 (Windows); 2. Check whether port 80 is open; 3. Check the Nginx startup message in the system log; 4. Use third-party tools, such as Nagios, Zabbix, and Icinga.

How to start nginx server How to start nginx server Apr 14, 2025 pm 12:27 PM

Starting an Nginx server requires different steps according to different operating systems: Linux/Unix system: Install the Nginx package (for example, using apt-get or yum). Use systemctl to start an Nginx service (for example, sudo systemctl start nginx). Windows system: Download and install Windows binary files. Start Nginx using the nginx.exe executable (for example, nginx.exe -c conf\nginx.conf). No matter which operating system you use, you can access the server IP

How to check whether nginx is started? How to check whether nginx is started? Apr 14, 2025 pm 12:48 PM

In Linux, use the following command to check whether Nginx is started: systemctl status nginx judges based on the command output: If "Active: active (running)" is displayed, Nginx is started. If "Active: inactive (dead)" is displayed, Nginx is stopped.

How to solve the problem of nginx cross-domain How to solve the problem of nginx cross-domain Apr 14, 2025 am 10:15 AM

There are two ways to solve the Nginx cross-domain problem: modify the cross-domain response header: add directives to allow cross-domain requests, specify allowed methods and headers, and set cache time. Use CORS modules: Enable modules and configure CORS rules that allow cross-domain requests, methods, headers, and cache times.

How to solve nginx403 How to solve nginx403 Apr 14, 2025 am 10:33 AM

How to fix Nginx 403 Forbidden error? Check file or directory permissions; 2. Check .htaccess file; 3. Check Nginx configuration file; 4. Restart Nginx. Other possible causes include firewall rules, SELinux settings, or application issues.

See all articles