


Pelayan fail statik HTTP ringkas yang ditulis menggunakan nodejs dan Python_node.js
Dalam proses pembangunan harian, kami selalunya perlu mengubah suai beberapa fail statik (seperti JavaScript, CSS, fail HTML, dll.) yang diletakkan pada CDN Dalam proses ini, kami berharap mempunyai cara untuk memetakan CDN dalam talian direktori ke tempatan Direktori pada cakera keras, supaya apabila kami mengubah suai fail secara setempat, tidak perlu menerbitkannya, dan kesannya dapat dilihat serta-merta selepas menyegarkan.
Sebagai contoh, nama domain CDN kami ialah: http://a.mycdn.com, dan direktori tempatan yang sepadan ialah: D:workassets Kami berharap semua akses kepada http://a.mycdn.com/*. akan dipetakan Pergi ke D:workassets* setempat. Contohnya, apabila anda melawati http://a.mycdn.com/s/atp.js, anda sebenarnya membaca D:workassetssatp.js tempatan tanpa memuat turun fail dalam talian daripada Internet.
Sangat mudah untuk melaksanakan fungsi ini, perkara utama adalah seperti berikut:
1. Buka perkhidmatan HTTP secara setempat dan dengarkan port 80;
2. Ubah suai fail hos sistem, tambah "127.0.0.1 a.mycdn.com", dan ikat nama domain CDN ke alamat pelayan setempat;
3. Konfigurasikan perkhidmatan HTTP tempatan Selepas menerima permintaan GET, semak dahulu sama ada fail yang sepadan wujud pada cakera keras tempatan Jika ia wujud, kandungan fail tersebut akan dikembalikan akan dikembalikan.
Seperti yang anda lihat, bahagian penting ialah membina perkhidmatan HTTP tempatan. Terdapat banyak tutorial dalam kawasan ini, seperti memasang perisian pelayan seperti Apache atau Ngnix secara tempatan, dan kemudian mengkonfigurasi peraturan pemajuan yang sepadan. Walau bagaimanapun, saya secara peribadi merasakan bahawa kaedah ini masih agak rumit. Apa yang akan diperkenalkan oleh artikel ini adalah kaedah lain yang tidak memerlukan pemasangan perisian pelayan.
Oleh kerana kami sedang membangun dan menyahpepijat secara tempatan, keperluan untuk prestasi dan keselarasan adalah tidak tinggi, jadi kami sebenarnya tidak memerlukan perisian HTTP profesional seperti Apache/Ngnix, kami hanya memerlukan skrip yang boleh menyediakan perkhidmatan HTTP Itu sahaja. Sebagai contoh, gunakan nodejs untuk melaksanakannya.
*
**/
var http = memerlukan("http"), url = memerlukan("url"),
laluan = memerlukan("laluan"),
fs = memerlukan("fs"),
local_folders,
base_url;
local_folders = [ // Laluan setempat, ejen akan mencari fail dalam direktori dalam senarai ini, dan jika tidak ditemui, pergi ke alamat dalam talian
];
base_url = "http://10.232.133.214"; // Laluan dalam talian, jika fail tidak ditemui, ubah hala ke alamat ini
var i, l = local_folders.length,
fn;
console.log("cuba muatkan " nama laluan);
untuk (i = 0; i < l; i ) {
fn = local_folders[i] nama laluan;
jika (path.existsSync(fn) && fs.statSync(fn).isFile()) {
fs.readFile(fn, fungsi (err, data) {
Response.writeHead(200);
Response.write(data);
Response.end();
});
kembali;
}
response.writeHead(302, {
"Lokasi":base_url nama laluan
});
response.end();
}
http.createServer(
var req_url = request.url,
// Memproses permintaan serupa dengan http://a.tbcdn.cn/??p/global/1.0/global-min.css,tbsp/tbsp.css?t=20110920172000.css
console.log("Permintaan untuk '" nama laluan "' diterima.");
loadFile(nama laluan, respons);
}).dengar(80);
Apabila mengakses laluan melalui http, skrip di atas akan terlebih dahulu mencari dalam direktori tempatan yang sepadan Jika ditemui, ia akan mengembalikan kandungan fail yang sepadan Jika ia tidak ditemui, ia akan terus 302 melompat ke dalam talian yang sepadan alamat. Untuk situasi di mana ia tidak dapat ditemui, penyelesaian lain ialah meminta pelayan tempatan memuat turun kandungan yang sepadan dari dalam talian dan mengembalikannya, tetapi untuk keperluan ini, lompatan 302 sudah memadai.
Sebagai tambahan kepada versi nodejs, saya juga menulis versi Python:
# -*- pengekodan: utf-8 -*-
#
# pengarang: oldj
#
os import
import BaseHTTPServer
LOCAL_FOLDERS = [
"D:/kerja/aset"
]
BASE_URL = "http://10.232.133.214"
kelas WebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
cetak "Permintaan untuk '%s' diterima." % laluan diri
untuk folder dalam LOCAL_FOLDERS:
fn = os.path.join(folder, self.path.replace("/", os.sep)[1:])
jika os.path.isfile(fn):
diri.send_response(200)
self.wfile.write(open(fn, "rb").read())
putus
lain:
self.send_response(302)
self.send_header("Lokasi", "%s%s" % (BASE_URL, self.path))
pelayan = BaseHTTPServer.HTTPServer(("0.0.0.0", 80), WebRequestHandler)
server.serve_forever()
可以看到,Python 版本的代码比 nodejs 版本的精简了很多。
上面的两段代码的功能还相对比较简单,比如没有输出内容的 MIME-Type、Content-Length、Content-Length、Content-Length操作(如读取文件超时等)也没有做特别的处理。对于本地开发环境来说,它们已经是可以工作的版本了,你也可以继续扩展这这他多的需求。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

VS Kod boleh didapati di Mac. Ia mempunyai sambungan yang kuat, integrasi git, terminal dan debugger, dan juga menawarkan banyak pilihan persediaan. Walau bagaimanapun, untuk projek yang sangat besar atau pembangunan yang sangat profesional, kod VS mungkin mempunyai prestasi atau batasan fungsi.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Kunci untuk menjalankan buku nota Jupyter dalam kod VS adalah untuk memastikan bahawa persekitaran Python dikonfigurasi dengan betul, memahami bahawa perintah pelaksanaan kod adalah konsisten dengan susunan sel, dan mengetahui fail besar atau perpustakaan luaran yang boleh menjejaskan prestasi. Fungsi penyempurnaan dan debug yang disediakan oleh kod VS dapat meningkatkan kecekapan pengekodan dan mengurangkan kesilapan.
