Dieses Mal erkläre ich Ihnen in Abschnitten, wie Sie die Konfigurationsdatei von Nginx herunterladen und welche Vorsichtsmaßnahmen für das Herunterladen von Nginx-Konfigurationsdateien gelten. Das Folgende ist ein praktischer Fall. Werfen wir einmal einen Blick.
HTML5 bietet ein neues Range-Tag, um das segmentierte Herunterladen von Dateien zu implementieren. Dieses Tag kann in Node.JS konfiguriert werden, um das segmentierte Herunterladen von Dateien zu implementieren.
Header-Tag
Anforderungsanforderungsheader: Dateiinhalt nach 3744 herunterladen
range: bytes=3744-
Return Response Header: Gesamtdateilänge 15522643 Bytes
accept-ranges': 'bytes' content-range': 'bytes */15522643'
Nginx-Konfiguration
Zuerst müssen Sie Nginx so konfigurieren, dass es die Rückgabe von Bereichs-Tags unterstützt. Es ist sehr einfach, add_header Accept-Ranges-Bytes hinzuzufügen Wenn die node.js-Seite nach der Aktivierung
Anforderungsinformationenserver { listen 80; server_name adksdf.com; location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|icon) { add_header Access-Control-Allow-Origin *; add_header Accept-Ranges bytes; root /var/www/...; access_log off; expires max; } ... }
Dies ist ein vollständiger Antwortheader. Beachten Sie, dass hier nicht die Gesamtlänge der Datei ist, sondern die Länge des aktuellen Bereichs.
content-length
Die Gesamtgröße der Datei kann anhand des Inhaltsbereichs in diesem Header ermittelt werden.
{ server: 'nginx', date: 'Wed, 24 Jan 2018 02:43:20 GMT', 'content-type': 'application/zip', 'content-length': '12420187', 'last-modified': 'Tue, 16 Jan 2018 12:09:47 GMT', connection: 'close', etag: '"5a5deb8b-ecdb53"', expires: 'Thu, 31 Dec 2037 23:55:55 GMT', 'cache-control': 'max-age=315360000', 'access-control-allow-origin': '*', 'accept-ranges': 'bytes', 'content-range': 'bytes 3102456-15522642/15522643' }
Dieses Beispiel erkennt zunächst halb heruntergeladene Dateien lokal, erstellt dann einen Dateistream im Lese-/Schreibmodus „r+“ und schreibt den Antwortstream in die Datei.
Hier wird der Anweisungsdatei Bereichsunterstützung hinzugefügt.
var reqOptions = { url: packageUrl, headers: {} } var filepath = '/path/to/your/part/file' var fileOptions = {} fs.stat(filepath, function(err, states) { if (states) { //Range: bytes=3744- reqOptions.headers['range'] = 'bytes=' + states.size + '-' fileOptions = { start: states.size, flags: 'r+' } } //创建 http 对象方法 var reqUrl = reqOptions.url var urlObj = url.parse(reqUrl) var options = { hostname : urlObj.hostname , port : urlObj.port , path : urlObj.pathname , headers : reqOptions.headers || {} } var req = http.request(options, function(res) { var receives = [] var err = null var statusCode = res.statusCode var headers = res.headers var ws = fs.createWriteStream(filepath, fileOptions) ws.on('error', function(e) { console.log('ws error', e) }) res.on('data', function(chrunk) { ws.write(chrunk) }) res.on('error', function(err) { ws.end() }) res.on('end', function() { ws.end() }) }) req.on('error', function(e) { cb && cb(e, null, {}) }) req.end() ... })
Beim Anfordern von Nginx können andere Statuscodes zurückgegeben werden, z. B. 206 oder 416, mit der folgenden Bedeutung:
206 Teilinhalt Was zurückgegeben wird, ist Teil des Dateiinhalts 416 Angeforderter Bereich nicht erfüllbarDer angeforderte Bereich überschreitet die DateigrößeIch glaube, dass Sie die Methode zum Lesen dieses Artikels beherrschen. Weitere spannende Artikel finden Sie auf der chinesischen PHP-Website.
Empfohlene Lektüre:
So verwenden Sie das On-Change-Attribut in IViewDetaillierte Erläuterung der Schritte für Vue zur Verarbeitung von Storejs Datenerfassung
Das obige ist der detaillierte Inhalt vonSo laden Sie die Nginx-Konfigurationsdatei abschnittsweise herunter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!