2012-05-04 32 views
14

Markdown có vẻ dễ viết và chỉnh sửa hơn HTML. Tất cả các biên tập viên HTML tôi đã nhìn thấy đầu ra một tấn rác không cần thiết. Markdown có vẻ sạch hơn.Tôi có nên chuyển đổi Markdown được lưu trữ sang HTML hay tôi nên lưu trữ HTML không?

Đây là những gì tôi đang nghĩ đến: lưu trữ đánh dấu trong cơ sở dữ liệu, chuyển đổi nó thành HTML với PHP Markdown, sau đó xuất nó vào trình duyệt web.

Một vấn đề là nó sẽ phải làm điều này mỗi lần một trang được yêu cầu. Điều này có vẻ hơi đắt tiền.

Đây có phải là một ý tưởng hay không? hoặc là có một cách hiệu quả hơn để làm điều này?

Trả lời

28

Ví dụ thực tế, Stack Overflow hỗ trợ Markdown (như bạn biết), nhưng lưu trữ cả hai đánh dấu là Markdown và HTML được hiển thị trong cơ sở dữ liệu. Điều này giúp trang phục vụ nhanh hơn nhiều, vì HTML được hiển thị luôn giống nhau. Các bài đăng được tạo ít thường xuyên hơn so với các bài đăng được hiển thị cho người dùng.

+0

đây chính xác là những gì tôi đang nghĩ. Nếu bạn lưu trữ đánh dấu, bạn phải phân tích cú pháp trên mỗi lần tải trang. nếu bạn phân tích cú pháp và lưu trữ html, bạn nhận được tải trang nhanh hơn nhưng làm cho nó không thể chỉnh sửa được nhiều. Lưu trữ cả hai (bit là giá rẻ) cho phép tốt nhất của cả hai thế giới. –

+1

Thay vào đó, bạn cũng có thể cache HTML đã chuyển đổi, giới hạn số lần truy cập đến DB và cần phải lưu trữ nó. Tất nhiên nó phụ thuộc vào ứng dụng của bạn :) – neolaser

1

Bạn có thể lưu trữ cả hai. Dấu hiệu được lưu trữ rất hữu ích nếu nó phải được chỉnh sửa nhiều lần, hoặc nếu một hay hơn Markdown để dịch HTML được phát triển. HTML được lưu trữ rất hữu ích, như bạn nói, để tránh tái tạo nó một lần nữa và một lần nữa.

7

Hãy quay lại từ trang web của bạn và tự hỏi làm thế nào "đắt tiền" thực sự là như vậy. Bạn có phục vụ hơn 1.000 đơn độc mỗi ngày? Thực tế, nó sẽ bóng? Với tất cả các loại câu hỏi này, câu trả lời không rõ ràng. Ví dụ: khi tôi xây dựng trang web cho một ngân hàng quốc tế, tài liệu CSS không thu nhỏ có thể thêm băng thông 1 gigabyte mỗi ngày. Tuy nhiên, khi tôi đang xây dựng trang web danh mục đầu tư của mình, tôi mong đợi một phần nhỏ của lưu lượng truy cập đó.

Tôi chắc chắn không ủng hộ việc xây dựng mã không hiệu quả .... chỉ cần nhớ rằng "chi phí" nên thực sự được đo lường như là thời gian xử lý, không chỉ là quy trình.

Nếu bạn thực sự quan tâm, hãy ghi lại trước và sau thời gian xung quanh việc thực hiện quy trình Đánh dấu PHP. Sau đó, tải máy chủ theo dõi trong một khoảng thời gian theo kiểu A/B. Con số không nói dối.

+0

Xin lỗi, nếu nó có vẻ ngớ ngẩn ... ghi lại những gì? băng thông? không gian đĩa trước và sau khi yêu cầu? – xameeramir

+1

@BountyMan, một thực tế phổ biến trong mã hóa là để echo (hoặc đăng nhập) một dấu thời gian trước và sau một hoạt động. Bằng cách đó, bạn có thể cho biết một hàm cụ thể cần thiết để hoàn thành trong bao lâu. Trong Phát triển giao diện người dùng, bạn thường có thể bỏ qua bước đó và chỉ sử dụng các công cụ chẩn đoán của trình duyệt, nhưng trong các ngôn ngữ phía sau như PHP, có vẻ dễ nhất chỉ cần ném hai dấu thời gian và làm việc từ đó. – bpeterson76

0

Gần đây tôi đã hoàn thành một dự án rất giống với những gì bạn đang yêu cầu. Thay vì lưu trữ HTML đầy đủ trong cơ sở dữ liệu, tôi đã chọn lưu trữ html được đánh dấu trên hệ thống tệp bằng API độc quyền, giống như MongoDB. Vẻ đẹp của việc lưu trữ được đánh dấu xuống so với toàn diện là việc in chân trên hệ thống tệp nhỏ hơn nhiều và nếu bạn cần xem dấu chấm thô, thì việc đọc dễ đọc hơn rất nhiều. Khi người dùng chỉnh sửa html, tôi hiển thị toàn bộ thông tin để họ có thể thấy nó trông như thế nào.

Đã có các đề xuất lưu trữ khác, mà tôi hoàn toàn không đồng ý. Nếu bạn đang tìm cách cải thiện hiệu suất bằng cách không phải đánh dấu phiên bản được đánh dấu cho mọi yêu cầu, thì tôi sẽ xem xét lưu vào bộ nhớ cache phiên bản đầy đủ mỗi khi được chỉnh sửa. Lưu trữ cả hai đánh dấu xuống và đánh bại hoàn toàn mục đích đánh dấu xuống, khi bạn trả tiền phạt trong không gian đĩa và/hoặc cơ sở dữ liệu ops.

Các vấn đề liên quan