search
HomeBackend DevelopmentPHP TutorialDetailed introduction to browser caching mechanism

Detailed introduction to browser caching mechanism

Jan 25, 2018 pm 02:28 PM
firefoxwebkitBrowser

Web cache can be divided into these types: browser cache, CDN cache, server cache, database data cache. Because the copy may be used directly to avoid re-sending the request or just confirm that the resource has not changed without re-transmitting the resource entity, web caching can reduce delays and speed up web page opening, reuse resources to reduce network bandwidth consumption, reduce the number of requests or reduce the transmission content to alleviate the problem. Server pressure.

This article mainly discusses the Browser HTTP cache mechanism that is closely related to the front end. Browser HTTP cache can be divided into strong cache and negotiation cache. Strong cacheandNegotiation cacheThe biggest and most fundamental difference is: if the strong cache hits, it will not send a request to the server (such as 200 from memory cache in chrome), but the negotiation cache will definitely Send a request to the server and verify whether the resource hits the negotiation cache through the request header field of the resource. If the negotiation cache hits, the server will return the request, but will not return the entity of the resource. Instead, it will notify the client that it can load the resource from the cache. Resources (304 not modified).
Detailed introduction to browser caching mechanism

The browser HTTP cache is determined by the header field of the HTTP message

Detailed introduction to browser caching mechanism

Fields that control strong caching are introduced according to priority

1.Pragma
        Pragma is a common header field left over from versions before HTTP/1.1, and is only used as a Used for backward compatibility with HTTP/1.0. Although it is a common header, its behavior when included in the response message is not standardized and depends on the browser's implementation. This field in the RFC only has an optional value of no-cache, which will notify the browser not to use the cache directly and require it to send a request to the server to verify the freshness. Because it has the highest priority, it will never hit the strong cache when it exists.

2.Cache-Control
         Cache-Control is a common header field and is also the mainstream field for HTTP/1.1 to control browser cache. Related to browser caching are the following response instructions:

Instruction Parameters Description
private None Indicates that the response can only be cached by a single user, not as a shared cache (i.e. the proxy server cannot cache it)
public can be omitted Indicates that the response can be cached by any object (including: the client sending the request, the proxy server, etc.)
no-cache can be omitted The validity must be confirmed before caching
no-store None Do not cache any content of the request or response
max-age=[s] Required Response The maximum value
  • max-age (unit is s) Sets the cache existence time, relative to the time when the request is sent. This is possible only if the response message header sets Cache-Control to a non-zero max-age or if Expires is set to be greater than the request date (discussed below) Hit strong cache. When this condition is met, Cache-Control does not exist in the response message header no-cache, no-store and the request message header does not exist## The #Pragma field will actually hit the strong cache. All the pictures below are screenshots of refresh (command+R).

Detailed introduction to browser caching mechanism
Detailed introduction to browser caching mechanism
Detailed introduction to browser caching mechanism

  • #no-cache

    means that the request must first confirm the validity of the cache with the server. If it is valid, the cache can be used (Negotiation Cache), regardless of the response message header Even if this field appears in the header of the request message, it will definitely not hit the strong cache. Chrome hard reloading (Command+shift+R) will add Pragma: no-cache and Cache-Control: no-cache to the header of the request.

  • no-store

    means that the browser and all intermediate caches are prohibited from storing any version of the return response. Strong caching and negotiation caching will not occur, which is suitable for personal privacy data. Or economic data.

  • #public

    Indicates that the response can be cached by browsers, CDNs, etc.

  • private

    The response is only cached privately and cannot be cached by CDN, etc. If HTTP authentication is required, the response is automatically set to private.

  • 3.
Expires

Expires is a response header field that specifies a date/time before which the HTTP cache is considered It is effective. An invalid date such as 0 means that the resource has expired. If the max-age
of the Cache-Control response header field is also set, Expires will be ignored. It is also a common header field left over from versions before HTTP/1.1 and is only used for backward compatibility with HTTP/1.0. Control negotiation cache fields

1.
Last-Modified/If-Modified-Since

If-Modified-Since is a request header field, and only Can be used in GET
or HEAD requests. Last-Modified is a response header field that contains the date and time when the resource identified by the server was modified. When accessing the server to request resources with the If-Modified-Since header, the server will check Last-Modified, if the time of Last-Modified is earlier than or equal to If-Modified-Since will return a 304 response without a body, otherwise the resource will be returned again. If-Modified-Since: , :: GMT

Last -Modified: , :: GMT

2.
ETag/ If-None-Match

          ETag
is a response header field, which is a hash string generated based on the entity content, identifying the status of the resource, and is generated by the server. If-None-Match is a conditional request header. If this field is added to the request header when requesting a resource, the value is ETag on the resource previously returned by the server, then if and only if there is no ETag attribute value for any resource on the server When listed in this header, the server will return a 200 response with the requested resource entity, otherwise the server will return a 304 response without the entity. ETag has a higher priority than Last-Modified. If both exist, ETag will prevail. If-None-Match:

If-None-Match: , , …
If-None-Match: *

Detailed introduction to browser caching mechanismThe comparison between ETag attributes uses the

weak comparison algorithm
, that is, the two files have the same content except that every bit is the same. It can also be considered the same. For example, two pages can be considered identical if they differ only in the generation time of the footer. Because of the characteristics of
ETag

, it has some advantages compared to Last-Modified: <pre class="brush:php;toolbar:false">    1.  某些情况下服务器无法获取资源的最后修改时间     2.  资源的最后修改时间变了但是内容没变,使用ETag可以正确缓存     3.  如果资源修改非常频繁,在秒以下的时间进行修改,Last-Modified只能精确到秒</pre> <h4 id="Overall-process">Overall process</h4> <p><span class="img-wrap"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/054/025/85ba8034ef5538a134188ffe6a26f38f-6.png?x-oss-process=image/resize,p_40" class="lazy" alt="Detailed introduction to browser caching mechanism" ></span></p> <p>Related recommendations:</p> <p><a href="http://www.php.cn/php-weizijiaocheng-377951.html" target="_self">Must understand the php caching mechanism</a></p> <p><a href="http://www.php.cn/php-weizijiaocheng-374034.html" target="_self">Analysis of how PHP uses the ob cache mechanism to achieve page static solution</a></p> <p><a href="http://www.php.cn/php-weizijiaocheng-340217.html" target="_self">PHP cache mechanism</a></p> <p class="comments-box-content"><br></p>

The above is the detailed content of Detailed introduction to browser caching mechanism. For more information, please follow other related articles on the PHP Chinese website!

Statement
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
PHP: An Introduction to the Server-Side Scripting LanguagePHP: An Introduction to the Server-Side Scripting LanguageApr 16, 2025 am 12:18 AM

PHP is a server-side scripting language used for dynamic web development and server-side applications. 1.PHP is an interpreted language that does not require compilation and is suitable for rapid development. 2. PHP code is embedded in HTML, making it easy to develop web pages. 3. PHP processes server-side logic, generates HTML output, and supports user interaction and data processing. 4. PHP can interact with the database, process form submission, and execute server-side tasks.

PHP and the Web: Exploring its Long-Term ImpactPHP and the Web: Exploring its Long-Term ImpactApr 16, 2025 am 12:17 AM

PHP has shaped the network over the past few decades and will continue to play an important role in web development. 1) PHP originated in 1994 and has become the first choice for developers due to its ease of use and seamless integration with MySQL. 2) Its core functions include generating dynamic content and integrating with the database, allowing the website to be updated in real time and displayed in personalized manner. 3) The wide application and ecosystem of PHP have driven its long-term impact, but it also faces version updates and security challenges. 4) Performance improvements in recent years, such as the release of PHP7, enable it to compete with modern languages. 5) In the future, PHP needs to deal with new challenges such as containerization and microservices, but its flexibility and active community make it adaptable.

Why Use PHP? Advantages and Benefits ExplainedWhy Use PHP? Advantages and Benefits ExplainedApr 16, 2025 am 12:16 AM

The core benefits of PHP include ease of learning, strong web development support, rich libraries and frameworks, high performance and scalability, cross-platform compatibility, and cost-effectiveness. 1) Easy to learn and use, suitable for beginners; 2) Good integration with web servers and supports multiple databases; 3) Have powerful frameworks such as Laravel; 4) High performance can be achieved through optimization; 5) Support multiple operating systems; 6) Open source to reduce development costs.

Debunking the Myths: Is PHP Really a Dead Language?Debunking the Myths: Is PHP Really a Dead Language?Apr 16, 2025 am 12:15 AM

PHP is not dead. 1) The PHP community actively solves performance and security issues, and PHP7.x improves performance. 2) PHP is suitable for modern web development and is widely used in large websites. 3) PHP is easy to learn and the server performs well, but the type system is not as strict as static languages. 4) PHP is still important in the fields of content management and e-commerce, and the ecosystem continues to evolve. 5) Optimize performance through OPcache and APC, and use OOP and design patterns to improve code quality.

The PHP vs. Python Debate: Which is Better?The PHP vs. Python Debate: Which is Better?Apr 16, 2025 am 12:03 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on the project requirements. 1) PHP is suitable for web development, easy to learn, rich community resources, but the syntax is not modern enough, and performance and security need to be paid attention to. 2) Python is suitable for data science and machine learning, with concise syntax and easy to learn, but there are bottlenecks in execution speed and memory management.

PHP's Purpose: Building Dynamic WebsitesPHP's Purpose: Building Dynamic WebsitesApr 15, 2025 am 12:18 AM

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP: Handling Databases and Server-Side LogicPHP: Handling Databases and Server-Side LogicApr 15, 2025 am 12:15 AM

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

How do you prevent SQL Injection in PHP? (Prepared statements, PDO)How do you prevent SQL Injection in PHP? (Prepared statements, PDO)Apr 15, 2025 am 12:15 AM

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.

See all articles

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 agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft