2010-07-28 38 views
8

Tôi có yêu cầu để người dùng tạo, sửa đổi và xóa bài viết của riêng họ. Tôi dự định sử dụng trình soạn thảo WMD mà SO sử dụng để tạo các bài viết.Đánh dấu hoặc HTML

Từ những gì tôi có thể thu thập, SO lưu trữ đánh dấu và HTML. Tại sao nó làm điều này - lợi ích là gì?

Tôi không thể quyết định lưu trữ đánh dấu, HTML hoặc cả hai. Nếu tôi lưu trữ cả hai loại nào tôi truy xuất và chuyển đổi để hiển thị cho người dùng.

CẬP NHẬT:

Ok, tôi nghĩ từ câu trả lời cho đến giờ, tôi nên lưu trữ cả markdown và HTML. Điều đó có vẻ thú vị. Tôi cũng đã đọc một bài đăng blog từ Jeff về khai thác XSS. Bởi vì trình soạn thảo WMD cho phép bạn nhập bất kỳ HTML nào, điều này có thể khiến tôi bị đau đầu.

Bài đăng trên blog được đề cập là here. Tôi đoán rằng tôi sẽ phải làm theo cách tiếp cận tương tự như SO - và khử trùng đầu vào ở phía máy chủ.

Mã vệ sinh mà SO sử dụng có sẵn dưới dạng Nguồn mở hay tôi sẽ phải bắt đầu từ đầu?

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn

Trả lời

8

Lưu trữ cả hai cực kỳ hữu ích/hữu ích về hiệu suất và tính tương thích (và cuối cùng là kiểm soát xã hội).

Nếu bạn lưu trữ chỉ Đánh dấu (hoặc bất kỳ đánh dấu không phải HTML nào), thì có chi phí hiệu suất bằng cách phân tích cú pháp thành HTML mỗi lần. Đây không phải là luôn luôn đáng chú ý giá rẻ.

Nếu bạn lưu trữ chỉ HTML, thì bạn sẽ có nguy cơ bị lỗi âm thầm trong HTML được tạo. Điều này sẽ dẫn đến rất nhiều bảo trì và đau đầu gây khó chịu. Bạn cũng sẽ mất quyền kiểm soát xã hội vì bạn không biết người dùng nào đã thực hiện thực sự là. Bạn có thể làm quản trị viên cũng muốn biết người dùng nào đang cố gắng thực hiện XSS bằng cách sử dụng <script> và cứ tiếp tục như vậy. Ngoài ra, người dùng cuối sẽ không thể chỉnh sửa dữ liệu ở định dạng Markdown. Bạn sẽ cần phải chuyển đổi nó trở lại từ HTML.

Để cập nhật HTML trên mọi thay đổi của phiên bản Đánh dấu, bạn chỉ cần thêm một trường bổ sung thể hiện phiên bản Đánh dấu đang được sử dụng để tạo đầu ra HTML. Bất cứ khi nào điều này đã được thay đổi ở phía máy chủ tại thời điểm bạn lấy hàng, phân tích lại dữ liệu bằng cách sử dụng phiên bản mới và cập nhật hàng trong DB. Đây chỉ là một khoản phụ phí một lần.

+1

Một nguy cơ khác chỉ lưu trữ HTML là nếu bạn cần chỉnh sửa, bạn không cần phải dựa vào chuyển đổi 1 thành 1 từ HTML trở lại thành đánh dấu – neolaser

+0

@neo: * "Ngoài ra, người dùng cuối sẽ không thể để chỉnh sửa dữ liệu ở định dạng Markdown. Bạn cần phải chuyển đổi dữ liệu từ HTML. "* – BalusC

6

Bằng cách lưu trữ cả hai bạn chỉ phải xử lý đánh dấu một lần (khi được đăng). Sau đó, bạn sẽ truy xuất HTML để bạn có thể tải các trang của mình nhanh hơn.

0

Nếu bạn chỉ lưu trữ một tài khoản, bạn sẽ phải tạo lại một chế độ khác cho chế độ xem hiển thị hoặc chế độ xem chỉnh sửa.

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