


[Zusammenstellung und Zusammenfassung] Mehrere praktische Antwortheader, die das Front-End kennen muss
Lesen Sie diesen Artikel, Sie werden:
Ein paar super-praktische Antwort-Header lernen, um die Probleme zu lösen, auf die Sie bei der Arbeit stoßen.
löst nicht nur das Problem, sondern verschafft Ihnen auch die Oberhand , wenn Sie mit dem Backend sowie Betrieb und Wartung uneins sind.
Ist es wichtig, Antwortheader zu lernen?
Es ist wirklich wichtig.Wenn Sie mir nicht glauben, schauen Sie sich die Szene unten an. Kommt sie Ihnen bekannt vor? 1. Sind Vorschauen und Downloads frustrierend? oder
pdf
/'json' usw.) Datei-Download url
kann geöffnet werden, wenn ich das a
-Tag verwende, aber es wird eine Vorschau. .. Was soll ich tun? Speichern! „
Zu diesem Zeitpunkt wird jemand FileSaver.js
oder „Handgeschriebenen Lesestream speichern unter“ empfehlen. Dann wiederholte jemand anderes...
Ich:? ? ? ![1663124836224266.png [Zusammenstellung und Zusammenfassung] Mehrere praktische Antwortheader, die das Front-End kennen muss](/static/imghw/default1.png)
Ist das ein Problem, für dessen Lösung das Schreiben von Code erforderlich ist? Wenn Sie den ![1663124836224266.png [Zusammenstellung und Zusammenfassung] Mehrere praktische Antwortheader, die das Front-End kennen muss](https://img.php.cn/upload/image/828/988/572/1663124836224266.png)
Response Header
von Content-Disposition
kennen, müssen Sie wissen, dass das Problem durch einfaches Hinzufügen einer Zeile zum Antwortheader gelöst werden kann. 1.2 Einführung
txt
(或者url
,可以当我用a
标签打开时,却变成了预览……怎么办?救!!!”
此时,就会有人上去推荐 FileSaver.js
或者 “手写读流另存为”。
然后还有人附和...
我:???
这是需要写代码才能解决的问题吗?
如果你有了解过 Content-Disposition
这个 Response Header
,那你一定知道,只需要响应头上增加一行,问题就能迎刃而解。
1.2 介绍
Content-Disposition
:这个响应头可以决定内容是 预览 还是 下载。
它支持三种格式的值:
Content-Disposition: inline
此时,消息体会以页面的一部分或者整个页面的形式展示。(预览)Content-Disposition: attachment
消息体应该被下载,默认文件名和url
格式有关。Content-Disposition: attachment; filename="filename.jpg"
消息体应该被下载,默认文件名可指定。
注:如果需要预览,需要配合适当的
Content-Type
食用;
1.3 示例
为此,我特意写了一个 express
小示例。
大抵是在 express
应用下写了三个路由,如下:
const user = { name: "摸鱼的春哥", blogUrl: "https://juejin.cn/user/1714893870865303" } const contentDispositionInline = async (req, res, next) => { res.setHeader('Content-Disposition', 'inline') res.send(user) } const contentDispositionFilename = async (req, res, next) => { res.setHeader('Content-Disposition', 'attachment; filename="chunge.json"') res.send(user) } const contentDispositionNoFilename = async (req, res, next) => { res.setHeader('Content-Disposition', 'attachment') res.send(user) }
然后我分别访问三个路由,效果差异:
二、项目升级了,需要客户 清空缓存 ?
2.1 场景
实施:“客户反馈Bug
还是没修复。”
你:“哥,真修复了,要不你让客户清一下缓存?”
实施:“啊?客户说他不会清……”
……
永远不要期望你的客户会进行 “那些研发才懂” 的操作。也不要把你的问题,归因到 浏览器缓存 上。
浏览器缓存 是被发明出来优化用户体验的,并不是被发明出来阻碍用户的。
因此,理解如何使用 Cache-Control
这个响应头,是前端的必知技能。
2.2 介绍
Cache-Control
:用来指定缓存机制。
缓存,作为前端八股文必考知识,相信大家已经耳熟能详。
常见的 Cache-Control
Content-Disposition
🎜: Dieser Antwortheader kann bestimmen, ob der Inhalt 🎜Vorschau🎜 oder 🎜Download🎜 ist. 🎜🎜Es unterstützt drei Werteformate: 🎜🎜🎜🎜Content-Disposition: inline
Zu diesem Zeitpunkt wird der Nachrichtentext als Teil der Seite oder als gesamte Seite angezeigt. (Vorschau) 🎜🎜🎜🎜
Content-Disposition: Anhang
Der Nachrichtentext sollte heruntergeladen werden und der Standarddateiname bezieht sich auf das
URL
-Format. 🎜🎜🎜🎜Content-Disposition: attachment; filename="filename.jpg"
Der Nachrichtentext sollte heruntergeladen werden und der Standarddateiname kann angegeben werden. 🎜🎜🎜🎜🎜Hinweis: Wenn Sie eine Vorschau benötigen, müssen Sie diese mit dem entsprechenden
Content-Type
abgleichen 🎜🎜🎜1.3 Beispiel 🎜 🎜🎜Dafür habe ich speziell ein kleines Beispiel für express
geschrieben. 🎜🎜Ich habe wahrscheinlich drei Routen unter der express
-Anwendung geschrieben, wie folgt: 🎜rrreee🎜Dann habe ich jeweils auf die drei Routen zugegriffen und der Effekt war unterschiedlich: 🎜🎜
🎜🎜 II. Das Projekt wurde aktualisiert und der Kunde muss den Cache leeren? 🎜🎜🎜2.1 Szenario 🎜🎜🎜Implementierung: „Kundenfeedback Bug
ist immer noch nicht behoben.“
Sie: „Bruder, das ist es wirklich behoben. Wie wäre es, wenn Sie den Kunden bitten würden, den Cache zu leeren? ://img.php.cn/ " alt="" Loading="lazy" class="medium-zoom-image"/>🎜🎜Erwarten Sie von Ihren Kunden niemals, dass sie 🎜„Forschung und Entwicklung verstehen nur“-Operationen🎜 ausführen. Führen Sie Ihr Problem auch nicht auf den 🎜Browser-Cache🎜 zurück. 🎜🎜🎜Browser-Cache🎜 wurde erfunden, um die Benutzererfahrung zu optimieren und nicht, um Benutzer zu behindern. 🎜🎜Daher ist das Verständnis der Verwendung des Cache-Control
-Antwortheaders eine unverzichtbare Fähigkeit für das Frontend. 🎜🎜2.2 Einführung🎜🎜🎜🎜Cache-Control
🎜: Wird zur Angabe des Caching-Mechanismus verwendet. 🎜🎜Caching ist ein Muss für achtteilige Front-End-Aufsätze und meiner Meinung nach ist es jedem bekannt.
Allgemeine 🎜Cache-Control
🎜-Attribute sind wie folgt: 🎜„Antwort-Header-Attribut“ Wert „Wert“ genannt starker Cache , Cache aushandeln.
🎜2.1 Szenario 🎜🎜🎜Implementierung: „Kundenfeedback Bug
ist immer noch nicht behoben.“
Sie: „Bruder, das ist es wirklich behoben. Wie wäre es, wenn Sie den Kunden bitten würden, den Cache zu leeren? ://img.php.cn/ " alt="" Loading="lazy" class="medium-zoom-image"/>🎜🎜Erwarten Sie von Ihren Kunden niemals, dass sie 🎜„Forschung und Entwicklung verstehen nur“-Operationen🎜 ausführen. Führen Sie Ihr Problem auch nicht auf den 🎜Browser-Cache🎜 zurück. 🎜🎜🎜Browser-Cache🎜 wurde erfunden, um die Benutzererfahrung zu optimieren und nicht, um Benutzer zu behindern. 🎜🎜Daher ist das Verständnis der Verwendung des Cache-Control
-Antwortheaders eine unverzichtbare Fähigkeit für das Frontend. 🎜🎜2.2 Einführung🎜🎜🎜🎜Cache-Control
🎜: Wird zur Angabe des Caching-Mechanismus verwendet. 🎜🎜Caching ist ein Muss für achtteilige Front-End-Aufsätze und meiner Meinung nach ist es jedem bekannt.
Allgemeine 🎜Cache-Control
🎜-Attribute sind wie folgt: 🎜„Antwort-Header-Attribut“ Wert „Wert“ genannt starker Cache , Cache aushandeln.
Cache-Control
🎜: Wird zur Angabe des Caching-Mechanismus verwendet. 🎜🎜Caching ist ein Muss für achtteilige Front-End-Aufsätze und meiner Meinung nach ist es jedem bekannt.
Allgemeine 🎜Cache-Control
🎜-Attribute sind wie folgt: 🎜„Antwort-Header-Attribut“ Wert „Wert“ genannt starker Cache , Cache aushandeln. cache-control | public | gibt an, dass die Antwort von jedem zwischengespeichert werden kann (einschließlich: dem Client, der die Anfrage stellt, dem Proxyserver usw.), selbst für normalerweise nicht zwischenspeicherbare Inhalte. (Zum Beispiel: 1. Die Antwort verfügt nicht über eine Max-Age-Anweisung oder einen Expires-Header; 2. Die dieser Antwort entsprechende Anforderungsmethode ist POST.) |
---|---|---|
private | gibt an, dass die Antwort dies kann kann nur von einem einzelnen Benutzer zwischengespeichert werden. Kann nicht als Freigabe zwischengespeichert werden (d. h. der Proxyserver kann sie nicht zwischenspeichern). Ein privater Cache kann beispielsweise Antwortinhalte entsprechend dem lokalen Browser des Benutzers zwischenspeichern. | |
max-age= | Legen Sie die maximale Cache-Speicherdauer fest, ab der der Cache als abgelaufen gilt (in Sekunden). Im Gegensatz zu Expires ist die Zeit relativ zum Zeitpunkt der Anfrage. |
Das obige ist der detaillierte Inhalt von[Zusammenstellung und Zusammenfassung] Mehrere praktische Antwortheader, die das Front-End kennen muss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Vue.js eignet sich für kleine und mittelgroße Projekte und schnelle Iterationen, während React für große und komplexe Anwendungen geeignet ist. 1) Vue.js ist einfach zu bedienen und für Situationen geeignet, in denen das Team nicht ausreicht oder die Projektskala klein ist. 2) React hat ein reichhaltigeres Ökosystem und eignet sich für Projekte mit hoher Leistung und komplexen funktionalen Bedürfnissen.

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

Es gibt drei gängige Methoden für Vue.js, um Arrays und Objekte zu durchqueren: Die V-für-Anweisung wird verwendet, um jedes Element zu durchqueren und Vorlagen zu rendern; Die V-Bind-Anweisung kann mit V-für dynamisch Attributwerte für jedes Element verwendet werden. und die .MAP -Methode kann Array -Elemente in Neuarrays umwandeln.

Es gibt zwei Möglichkeiten, Divelemente in Vue zu springen: Verwenden Sie Vue Router und fügen Sie Router-Link-Komponente hinzu. Fügen Sie den @click Event -Listener hinzu und nennen Sie dies. $ Router.push () Methode zum Springen.

Zu den Methoden zum Implementieren des Sprung eines Tags in VUE gehören: Verwenden des A -Tags in der HTML -Vorlage, um das HREF -Attribut anzugeben. Verwenden Sie die Router-Link-Komponente des Vue-Routings. Verwenden Sie dies. $ Router.push () Methode in JavaScript. Parameter können durch den Abfrageparameter weitergeleitet werden, und Routen sind in den Routeroptionen für dynamische Sprünge konfiguriert.

VUE -Komponentenübergebenwerte sind ein Mechanismus zum Übergeben von Daten und Informationen zwischen Komponenten. Es kann durch Eigenschaften (Requisiten) oder Ereignisse implementiert werden: Props: Deklarieren Sie die Daten, die in der Komponente empfangen werden sollen, und übergeben Sie die Daten in der übergeordneten Komponente. Ereignisse: Verwenden Sie die $ emit-Methode, um ein Ereignis auszulösen und es in der übergeordneten Komponente mithilfe der V-On-Anweisung anzuhören.

Funktionsabfangen in VUE ist eine Technik, mit der die Häufigkeit, mit der eine Funktion eingerufen wird, innerhalb eines bestimmten Zeitraums aufgerufen wird und Leistungsprobleme verhindern. Die Implementierungsmethode lautet: Importieren Sie die Lodash -Bibliothek: importieren {dunounce} aus 'lodash'; Verwenden Sie die Dabounce -Funktion, um eine Intercept -Funktion zu erstellen: const dabouncedFunction = dunounce (() = & gt; { / logical /}, 500); Rufen Sie die Abfangfunktion auf und die Steuerfunktion wird höchstens einmal in 500 Millisekunden aufgerufen.
