2008-12-31 27 views
6

Tôi là sinh viên phát triển web (và cao đẳng), vì vậy xin lỗi nếu điều này có vẻ ngây thơ và xúc phạm, tôi chắc chắn không có ý đó. Kinh nghiệm của tôi đã được với PHP và với một dự án nhỏ trên đường chân trời (một lịch thay đổi vinh quang) Tôi hy vọng sẽ tìm hiểu một trong những khuôn khổ cấp cao hơn để giảm bớt gánh nặng mã. Cho đến nay, tôi đã xem CakePHP Symfony Django và Rails.Django, Rails Routing ... Point?

Với PHP, các URL được ánh xạ rất đơn giản với các tệp và nó "chỉ hoạt động". Nó nhanh chóng cho máy chủ và trực quan. Nhưng với tất cả các khuôn khổ này, có khuynh hướng này để "làm đẹp" các URL bằng cách làm cho chúng ánh xạ tới các hàm khác nhau và định tuyến các tham số cho các biến khác nhau trong các tệp khác nhau.

cuốn sách "The Rails Way" mà tôi đang đọc thừa nhận rằng đây là con chó chậm và là nguyên nhân gây ra nhiều ảnh hưởng nhất đến các dự án lớn. Câu hỏi của tôi là "tại sao có nó ở nơi đầu tiên?"? Có một điểm cụ thể trong mô hình url-map-to-a-file (hay mod_rewrite vào một tệp) đòi hỏi phải có các regex và các lược đồ định tuyến phức tạp không? Tôi có bỏ lỡ điều gì đó bằng cách không sử dụng chúng không?

Cảm ơn trước!

Trả lời

6
  • URL phải dễ nhớ và nói. Và người dùng nên biết điều gì sẽ xảy ra khi cô ấy thấy URL đó. Ánh xạ URL trực tiếp vào tệp không phải lúc nào cũng cho phép điều đó.
  • Bạn có thể muốn sử dụng các URL khác nhau cho cùng hoặc ít nhất là thông tin tương tự được hiển thị. Nếu máy chủ của bạn buộc bạn sử dụng 1 url < -> 1 ánh xạ tệp, bạn cần phải tạo tệp bổ sung với tất cả chức năng của chúng đang được chuyển hướng đến tệp khác. Hoặc bạn sử dụng các công cụ như mod_rewrite không dễ dàng hơn khi ánh xạ url của Rails.
  • Trong một trong những ứng dụng của tôi, tôi sử dụng URL đó trông giống như http://www.example.com/tên/một số công cụ thêm/. Điều này cũng có thể được thực hiện với mod_rewrite, nhưng ít nhất là đối với tôi nó dễ dàng hơn để cấu hình các url trong dự án django sau đó trong mỗi dụ apache tôi chạy ứng dụng tại.

chỉ 2 cent của tôi ...

0

Ngoài ra, router giống như mod_rewrite, nhưng linh hoạt hơn nhiều. Chúng không phải là biểu thức thường xuyên, và do đó, có nhiều tùy chọn hơn cho các loại tuyến khác nhau.

0

Phụ thuộc vào mức độ ứng dụng của bạn lớn đến mức nào. Chúng tôi có một ứng dụng khá lớn (hơn 50 mẫu) và nó không gây ra bất kỳ vấn đề gì cho chúng tôi. Khi đó, chúng tôi sẽ lo lắng về nó.

2

URL Django cũng rất tùy chỉnh. Với các khung công tác PHP như Code Igniter (Tôi không chắc chắn về Rails), bạn buộc phải vào cấu trúc/class/method/extra/URL. Mặc dù điều này có thể tốt cho các dự án và ứng dụng nhỏ, ngay khi bạn thử và làm cho nó lớn hơn/năng động hơn, bạn gặp sự cố và phải viết lại một số mã khung để xử lý nó.

3

Lưu trữ mã ứng dụng trong cây tài liệu của máy chủ web là mối quan ngại về bảo mật.

  • một sai có thể vô tình tiết lộ mã nguồn để khách
  • file bơm ra thông qua một lỗ hổng bảo mật là ngay lập tức thực thi bởi HTTP yêu cầu
  • file backup (tạo ra ví dụbởi soạn thảo văn bản) có thể tiết lộ mã hoặc được thực thi trong trường hợp sai
  • file cũ mà người quản trị đã thất bại trong việc xóa có thể tiết lộ tính năng ngoài ý muốn
  • yêu cầu tập tin thư viện phải bị từ chối một cách rõ ràng
  • URL tiết lộ chi tiết thực hiện (trong đó ngôn ngữ/khuôn khổ đã được sử dụng)

Lưu ý rằng tất cả những điều trên không phải là vấn đề miễn là những thứ khác không sai (và một số lỗi này sẽ nghiêm trọng ngay cả một mình). Nhưng một cái gì đó luôn luôn đi sai, và thêm hàng phòng thủ là tốt để có.

6

Phần lớn đã được đề cập nhưng chưa có ai đề cập đến SEO. Google đặt rất nhiều trọng lượng trên chính URL, nếu url đó là widgets.com/browse.php?17, điều đó không thân thiện với SEO. Nếu URL của bạn là widgets.com/products/buttons/ sẽ có tác động tích cực đến xếp hạng trang của bạn cho các nút