คุณควรตั้งโปรแกรมฝั่งเซิร์ฟเวอร์สำหรับเว็บไซต์หรือไม่?


38

ฉันกำลังจะเริ่มสร้างเว็บไซต์โครงการดนตรีสำหรับเพื่อน ตอนนี้น่าจะง่ายพอสมควร: ไม่มีเนื้อหาแบบไดนามิก (วันทัวร์ ฯลฯ ) และไม่มีอะไรมากไปกว่าเพลงตัวอย่างที่ฝังอยู่หรือลิงก์ SoundCloud ฉันไม่ได้คาดหวังว่าจะใช้อะไรมากกว่าวานิลลา JavaScript และ Bootstrap หรือมูลนิธิสำหรับกริดที่ตอบสนอง

มันเพียงพอหรือไม่ ฉันสามารถอัปโหลดไฟล์ HTML, CSS และ JS ไปยังโฮสต์และทำได้หรือไม่หรือฉันควรใช้เวลาในการเขียนโปรแกรมเซิร์ฟเวอร์ backend ใน Node หรือ PHP?


54
มันเพียงพอหรือไม่ คุณมีปัญหาอะไรที่การมีแบ็คเอนด์แบบไดนามิกจะช่วยแก้ปัญหาได้ ทำให้มันงี่เง่าง่ายๆจนกว่าคุณจะทำไม่ได้
RubberDuck

25
ขยายงานที่ไม่เสร็จให้มากที่สุด YAGNI
RubberDuck

9
คุณอาจจะดีที่สุดในการติดตั้ง CMS สำเร็จรูปหากสิ่งที่คุณกำลังจะทำคือการเขียนข้อความอัปโหลดรูปภาพและไฟล์เพลงไม่กี่ไฟล์ / ฝังไฟล์วิดีโอ / YouTubes ... WordPress เป็นต้น เป็น บริษัท ในอุดมคติและโฮสต์ส่วนใหญ่เสนอโปรแกรมติดตั้งแบบคลิกเดียวเพื่อให้คุณไปได้ภายในไม่กี่นาที .... มี CMSes มากมาย
Kinnectus

11
ฉันสงสัยว่าทำไมคำถามเช่นนี้จึงมีผู้ติดตามมากมาย มันเหมือนกับถามว่า "ฉันต้องสร้างฐานข้อมูลสำหรับซอฟต์แวร์ของฉันแม้ว่าจะไม่จำเป็นต้องจัดเก็บข้อมูลใด ๆ " มันจะไม่ทำให้ฉันประหลาดใจหากเป็นคำถามเริ่มต้น แต่ไม่ใช่เมื่อคุณมีทักษะเพียงพอที่จะสร้างโครงการ bootstrap / รากฐาน
มาห์ดี

14
@Mahdi มัน upvoted เพราะทุกคนสงสัยสิ่งที่แน่นอนนี้เป็นเวลา 5 ปีและไม่มีใครกล้าพอที่จะถาม
djechlin

คำตอบ:


86

หากคุณไม่ทราบว่าคุณต้องการรหัสฝั่งเซิร์ฟเวอร์หรือไม่คุณอาจ *

* Caveat : รหัสฝั่งเซิร์ฟเวอร์มีความสำคัญต่อความปลอดภัยเมื่อคุณต้องการควบคุมการเข้าถึงเนื้อหาข้อมูลหรือฟังก์ชันการทำงานภายใน (ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์ของคุณโปรดดูย่อหน้าสุดท้าย)

ถามตัวเองว่าปัญหาที่ใช้เทคโนโลยีฝั่งเซิร์ฟเวอร์จะแก้ปัญหาได้อย่างไร หากคุณไม่สามารถคิดถึง (และในกรณีของคุณฉันไม่สามารถทำได้) จากนั้นคุณไม่ต้องการมัน

โปรดระวังว่ามากกว่าที่คุณคิดว่าเป็นไปได้โดยใช้รหัสฝั่งไคลเอ็นต์ เฟรมเวิร์ก JavaScript เช่น AngularJS หรือ ReactJS สามารถให้คุณรวมเข้ากับบุคคลที่สามเนื้อหาแบบไดนามิกผ่าน API ของการใช้ Ajax (ซึ่งรวมถึงการเชื่อมต่อกับ API ที่สามารถจัดการความปลอดภัยของตนเองได้)


17
ฉันคิดว่านี่เป็นคำสั่งที่อันตรายสำหรับการใช้เทคโนโลยีฝั่งเซิร์ฟเวอร์บ่อยครั้งเมื่อคุณ 'สามารถทำมันได้ฝั่งไคลเอ็นต์': การตัดสินใจย้ายสิ่งต่าง ๆ ไปยังเซิร์ฟเวอร์นั้นเป็นเพราะเหตุผลด้านความปลอดภัย - เช่นเดียวกับการส่งเสริมทัศนคติที่ 'ไม่รู้' กำลังกังวล: โปรแกรมเมอร์ควรพิจารณาถึงความปลอดภัยในแอปพลิเคชันใด ๆเสมอแม้แต่แอพพลิเคชั่นที่เรียบง่ายตามที่อธิบายไว้ โซลูชันทั้งหมดควรคำนึงถึง - คุณต้องการพื้นที่เนื้อหาที่ 'ปลอดภัย' บังคับให้ผู้ใช้ลงทะเบียนหรือกดไลค์บน FB ก่อนส่ง mp3 หรือไม่ ( แต่ในกรณีนี้เว็บไซต์คงไม่เสียงดี)
Jmons

3
มีบางสิ่งที่จะกล่าวถึงข้อได้เปรียบด้านความปลอดภัยของตัวสร้างไซต์แบบคงที่เช่นกัน สำหรับแอปพลิเคชั่นจำนวนมากไซต์แบบสแตติกเป็นระบบความปลอดภัยขั้นสูงสุดที่ไม่มีการแฮ็กอย่างแท้จริง
นาธานอาเธอร์

1
Server-side code is essential for securityนักพัฒนาบางคนไม่ให้ af * ck เกี่ยวกับความปลอดภัย ไม่จนกว่าคุณจะโยนใบหน้าของพวกเขาในความยุ่งเหยิงของพวกเขา บรรทัดของฉันคือถ้าคุณต้องการการรับรองความถูกต้องคุณต้องกลับไปที่สำนักงาน หากคุณต้องการจัดเก็บข้อมูลคุณจำเป็นต้องมี BackOffice ซึ่งข้อมูลจะถูกตรวจสอบเป็นครั้งที่สองหลังจากตรวจสอบโดยฝั่งไคลเอ็นต์
Walfrat

1
@ Walrat หากคุณต้องการการรับรองความถูกต้องคุณสามารถลดจำนวนลงในบริการ auth ใด ๆ ที่เปิดอยู่และไม่ใช้แบ็กเอนด์ใด ๆ เลย หากคุณต้องการการอนุญาตคุณอาจต้องการแบ็กเอนด์บางอย่าง
corsiKa

56

อ่านเกี่ยวกับเครื่องกำเนิดไฟฟ้าไซต์คงที่ สิ่งเหล่านี้ช่วยให้คุณสามารถสร้างเว็บไซต์ในรูปแบบการเขียนโปรแกรม (โดยใช้เทมเพลตข้อมูล ฯลฯ ) และไม่ใช่การสร้าง HTML ด้วยมือ ผลลัพธ์คือชุดของ HTML และ CSS แบบสแตติกซึ่งไม่ต้องการแบ็กเอนด์ใด ๆ

https://www.staticgen.com/แสดงรายการและจัดอันดับของตัวกำเนิดโอเพนซอร์ซจำนวนดังกล่าว มีข้อเสนอแบบโอเพ่นซอร์สอยู่เช่นกัน


3
+1 สิ่งนี้ยังใช้งานได้กับไซต์แบบไดนามิกที่ใช้เวลาเล็กน้อย (เช่นบล็อกและกำหนดการเดินทาง) จนกว่าเนื้อหาจะขึ้นอยู่กับผู้ใช้ที่ดูหน้าเว็บมันมักจะเพียงพอ
RemcoGerlich

1
+1 วันทัวร์และเพลงตัวอย่างจะต้องได้รับการอัปเดตโดยลูกค้าไม่มากก็น้อย เครื่องมือสร้างเว็บไซต์แบบคงที่หลีกเลี่ยงที่เขาต้องการสัมผัส HTML และมันง่ายกว่าและปลอดภัยกว่า CMS (ดูแลไม่ดี)
Bergi

3
ในขณะที่ฉันยอมรับว่านี่เป็นคำแนะนำที่ดีสำหรับ OP แต่จริง ๆ แล้วมันพยายามตอบคำถามตามที่ถามหรือไม่?
Woodrow Barlow

คำตอบที่ทำเครื่องหมายไว้นั้นกว้างกว่าและสอดคล้องกับคำถามที่ถามเช่นวูดโรว์บาร์โลว์กล่าวถึง อย่างไรก็ตามฉันทำ +1 สำหรับการตั้งค่าล่วงหน้าเป็นวิธีที่ดีสำหรับฉันและคนอื่น ๆ สามารถทำได้
Deegriz

2
@WoodrowBarlow: ฉันเถียงว่าCan I simply upload HTML, CSS, and JS files to a host and be done with it, or should I take the time to program a backend server in Node or PHP?ไม่เรียกร้องให้มีการชี้ให้เห็นว่ามีความเป็นที่ 3 ในกรณีของ OP ที่น่าสนใจค่อนข้าง IMHO ตัวเลือก :)
Tobia Tesan

6

คุณสามารถและควรใช้เฉพาะเว็บไซต์คงถ้ามันเป็นพอหรือใช้เครื่องกำเนิดไฟฟ้าแบบคงที่เว็บไซต์ ทำไม? การบำรุงรักษา. รหัสมีข้อบกพร่อง ทุกสองสามสัปดาห์จะพบช่องโหว่เรื่องความปลอดภัยของเวิร์ดเพรสอีกหนึ่งตัว หากคุณใช้ CMS ทั่วไปคุณจะต้องแก้ไขอย่างต่อเนื่อง เว็บไซต์เพื่อนของคุณจะมีโฆษณายาเสพติดที่ผิดกฎหมายโฆษณาชวนเชื่อ ISIS มัลแวร์ที่ติดตั้งบนคอมพิวเตอร์ของผู้เยี่ยมชมหรือที่แย่กว่านั้น แม้ว่าคุณจะทำการปะแก้เป็นประจำคุณอาจจะสายเกินไปดังนั้นคุณต้องตรวจสอบแฮ็คอย่างต่อเนื่อง มีวิธีในการรักษาความปลอดภัย CMS นี้ ติดตั้ง "ปลั๊กอินความปลอดภัย" กำหนดค่าไฟร์วอลล์เว็บแอปพลิเคชันเช่น mod_security ฯลฯ ทำงานได้มากขึ้น พวกเขายังต้องได้รับการปรับปรุงให้ทันสมัยอยู่เสมอ บางครั้งกฎ mod_security ของคุณจะทำลายปลั๊กอินสำหรับ WordPress คุณต้องวิเคราะห์และแก้ไข การทำงานมากขึ้น.

คุณอาจคิดว่าไม่มีใครต้องการแฮ็กไซต์นั้น แต่สำหรับช่องโหว่ความปลอดภัยทั่วไปที่พบในระบบ CMS ทั่วไปจะมีบอทอัตโนมัติในไม่ช้าที่จะรวบรวมข้อมูล / ค้นหาเว็บและแฮ็กไซต์ทั้งหมดโดยใช้ CMS นั้น พวกเขาต้องการกระจายลิงก์ / มัลแวร์ / โฆษณาชวนเชื่อ

ด้วยไซต์แบบสแตติก (สร้างด้วยตนเองหรือด้วยตัวสร้าง) คุณไม่มีปัญหา

หากคุณใช้แบ็กเอนด์ของคุณเองก็จะมีช่องโหว่ด้านความปลอดภัย (ไม่มีใครสมบูรณ์แบบ) แต่ส่วนใหญ่แล้วจะไม่มีใครเอาเปรียบพวกเขาสำหรับเว็บไซต์เล็ก ๆ นั้น แต่คุณต้องการใช้อะไร หากคุณต้องการสร้างบรรณาธิการที่เพื่อนของคุณสามารถเปลี่ยนวันทัวร์เองได้ให้ลองคิดดูว่าจะใช้เวลานานเท่าใดจนกว่าเขาจะสามารถใช้งานได้โดยง่ายโดยที่คุณไม่ต้องให้ความช่วยเหลือ คุณสามารถเปลี่ยนวันที่สำหรับเขาด้วยงบประมาณครั้งนั้นได้กี่ครั้ง

ในความคิดของฉันวันนี้มีคนจำนวนมากเกินไปที่จะใช้ระบบ CMS สำหรับทุกไซต์เพราะ HTML แบบคงที่ "เก่า" หากคุณไม่ต้องการอะไรที่ไม่สามารถทำได้ด้วย HTML5 ให้ใช้โค้ดฝั่งเซิร์ฟเวอร์ แต่ถ้าคุณไม่ต้องการคุณสามารถประหยัดเวลาได้มากหากไม่มีมัน


ทุกสองสามสัปดาห์? ฮ่า ๆ ถ้าเพียง! มากขึ้นเช่นวัน
การแข่งขัน Lightness กับโมนิก้า

3

คุณจะต้องทำการเขียนโปรแกรมแบ็คเอนด์เมื่อคุณต้องการ

อย่างไรก็ตามแม้คุณสมบัติพื้นฐานเช่นรูปแบบการส่งอีเมลต้องเขียนโปรแกรมแบ็กเอนด์ขั้นพื้นฐานมักจะ หากเป็นเพียงเว็บไซต์ดิสเพลย์ก็ใช่แล้ว


1
หากเป็นเพียงคุณสมบัติง่ายๆคุณสามารถใช้บริการ SaaS บางอย่างเพื่อแทนที่ได้ ตัวอย่างเช่นแบบฟอร์มการลงทะเบียนสามารถทำได้ฟรีในGoogle Formsแล้วเชื่อมโยงจากเว็บไซต์
AndréParamés

2

ไม่จำเป็น แต่มีปัญหาบางอย่างที่คุณน่าจะเกิดขึ้นหากคุณสร้างทั้งไซต์ด้วย HTML ธรรมดา

เว็บไซต์หลายแห่งมีองค์ประกอบเมนูส่วนหัวและส่วนท้ายเดียวกันในหลาย ๆ หน้า หากคุณเพียงแค่คัดลอกและวางสิ่งเหล่านี้จากหน้าหนึ่งไปอีกหน้าหนึ่งนี่อาจกลายเป็นเรื่องน่าเบื่อและเกิดข้อผิดพลาดได้ง่ายเนื่องจากเว็บไซต์มีขนาดใหญ่ขึ้นและคุณต้องทำการเปลี่ยนแปลงในพื้นที่เหล่านี้ต่อไป

ในวันก่อนที่การเขียนโปรแกรมฝั่งเซิร์ฟเวอร์เป็นเรื่องธรรมดาทั่วไปวิธีหนึ่งในการแก้ไขปัญหานี้คือการใช้เฟรมเพื่อฝังพื้นที่เหล่านี้ในทุก ๆ หน้า สิ่งนี้หลุดพ้นจากความโปรดปรานเมื่อหลายปีก่อนดังนั้นฉันไม่แนะนำให้ทำตอนนี้ คุณสามารถเขียนโค้ดด้านเซิร์ฟเวอร์อย่างง่ายแทนเพื่อแสดงองค์ประกอบทั่วไปเหล่านี้ในทุก ๆ หน้า

ฉันจะเห็นด้วยกับคนอื่น ๆ ที่นี่ซึ่งได้แนะนำให้ใช้ CMS นอกชั้นวาง


1
อีกทางเลือกหนึ่งของ "การคัดลอกและวาง" คือการใช้เครื่องมือสร้างเว็บไซต์แบบคงที่ ที่ควรดูแลองค์ประกอบเมนู / ส่วนหัว / ท้ายกระดาษให้คุณช่วยให้คุณกังวลเกี่ยวกับเนื้อหา
Doktor J
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.