Trang 3 / 10 FirstFirst 1234568 ... LastLast
Hiển thị kết quả từ 21 đến 30 / 100
  1. #21
    Tham gia
    17-02-2005
    Bài viết
    151
    Like
    0
    Thanked 2 Times in 1 Post
    Hơ, có vẻ như bạn ngoc_viet08 chưa hiểu được bản chất vấn đề chứ ý tưởng này hữu ích cho những site có dữ liệu lớn đấy chứ?

    Hãy lấy 1 ví dụ đơn giản, site A có 2 bảng:
    - Bảng config: name, value - chỉ có vài record về cấu hình cơ bản của site.
    - Bảng content: id, intro, body - với số records lên đến hàng chục, trăm nghìn, thậm trí là hàng triệu.

    Mình bắt đầu so sánh:

    1. Cách truyền thống:
    PHP Code:
    <html>
    <head>
    <title><?php print $config->site_title?></title>
    </head>
    <body>
    <?php
        
    // Proccess this content
        
    $query mysql_query("SELECT * FROM content WHERE id = "$_GET***91;'id'***93;);
        while ( 
    $row mysql_fetch_object($query) ) {
            
            
    // Print content here
        
    }
    ?>
    </body>
    </html>
    2. Ý tưởng của chủ thớt:
    PHP Code:
    <html>
    <head>
    <title><?php print $config->site_title?></title>
    </head>
    <body>
    <?php
        
    // Proccess this content
        
    if ( file_exists("content-$i.php") ) {
            
            
    // Just included the file, not need any query.
            
    include("content-$i.php");
        } else {
            
            
    // Server is overloaded :-P.
            
    $query mysql_query("SELECT * FROM content WHERE id = "$_GET***91;'id'***93;);
            while ( 
    $row mysql_fetch_object($query) ) {
                
                
    // Print content here
            
    }
        }
    ?>
    </body>
    </html>
    Mời các bác comment về optimization!

  2. #22
    Tham gia
    25-07-2006
    Location
    127.0.0.1
    Bài viết
    120
    Like
    1
    Thanked 0 Times in 0 Posts
    Tối ưu về thời gian truy vấn, đầu tiên ta có thể nghĩ ngay đến tối ưu về code query.

    Nhưng nếu như 1 truy vấn được sử dụng với tần suất lớn, nếu ta kết hợp thêm phương pháp: lưu giữ kết quả truy vấn.

    Những lần sau, nếu có yêu cầu thực hiện truy vấn đó, ta không sử dụng lệnh truy vấn nữa mà chỉ xuất kết quả (đã được lưu trữ) ra, thì tất nhiên, thời gian thực thi sẽ rất nhanh và tiết kiệm tài nguyên server.

  3. #23
    Tham gia
    02-06-2007
    Bài viết
    981
    Like
    0
    Thanked 2 Times in 2 Posts
    hiện nay làm web không cần csdl là một khả năng khó có thể xẩy ra. ngay cả web flash mình đọc sách nó cũng support csdl mà. còn vẫn đề về tốc độ của web thì một coder khó có thể giải quết tận gốc được. bạn cần nhờ tới một người làm về csdl liệu để giải quết vẫn đề này.
    mình đã đọc quấn Expert PHP and MySQL (http://www.wrox.com/WileyCDA/WroxTit...470563125.html)
    cũng mới đọc nó thôi chưa có thời gian để làm mấy nay cũng đang mắc kẹt với cái component joomla thấy quấn này rất hay còn mấy quấn về csdl các bác coder lên đọc về csgl hiểu rõ hơn về hệ csdl mình dùng sẽ giải quết rất nhiều bài toán.
    Caching Your Database Query: cái này rất có ích cho nhưng truy số lượng record lớn. trước mình làm Data Tables của Jquery có làm phần này, cải thiện tốc độ rất tốt. Ngoài ra còn tính toàn vẹn của query bạn sử dụng nữa.

    web nhănh hay trậm phụ thuộc rất lớn vào csdl bạn thiết kế. nếu bạ thiết kế csdl không được tốt thì việc thực hiện các câu try vẫn dẫn sẽ rất mất thời gian vì phải chạy so sánh vong vòng. Ngoài ra một bảng csdl bạn thiết kế cũng ảnh hưởng tới tốc độ nữa.......

  4. #24
    Tham gia
    26-09-2005
    Bài viết
    132
    Like
    0
    Thanked 2 Times in 2 Posts
    Có nghĩ tới giải pháp này nhưng chưa có dịp thử vì các website chưa có lượng truy cập đông đến nổi tìm tới giải pháp tiết kiệm tài nguyên như thế. Tuy nhiên cũng có nghĩ tới giải pháp tương tự có thể chia sẻ như sau:

    Việc đầu tiên là xác định phần tĩnh của trang web. Ví dụ nội dung tin tức, sản phẩm là luôn cố định.(trừ khi phải sửa nội dung)
    - Các phần ít thay đổi như menu, quảng cáo
    - Các thành phần thường xuyên thay đổi hay comment hay trang tìm kiếm

    Tách các thành phần của trang web và xuất ra HTML toàn bộ chúng
    Ví dụ:
    + Folder Menu: Chứa tất cả HTML trạng thái của menu
    + Folder Detail: Chưa tất cả các nội dung
    ... vv. Điều này giảm thiểu số lượng file HTML cache giảm đi với cấp số nhân. Nếu làm theo giải pháp của chủ thớt thì số tiền mua HDD quá số tiền tiết kiệm.

    + Mỗi request tới server đều tách và xử lý từng phần để cache ra HTML. Nếu request tương tự trong tương lai thì chỉ việc include những phần đã cache mà không phải truy vấn lại.

    Ví dụ. Bạn đọc tin tức tại o2bsoft với Url như sau: http://o2bsoft.com/?idmenu=2&iddetail=11

    Viêc đầu tiên là phân tích request trên thành 2 phần: Idmenu, iddetail rồi kiểm tra từng phần này có tồn tại trước đó không. (Dùng file_exists("$link"))

    Nếu không:
    + Select trong menu xuất ra trong Folder Menu với tên 2.html
    + Tương tự xuất ra phần nội dung vào Folder Detail với tên: 11.html

    Truyền các tham số để file để trang xử lý tin tức nạp vào
    Ví dụ: $idmenu=2.html, $detail=11.html

    Trang xử lý tin tức chỉ việc nạp các thành phần này vào trong trang web.
    Ví dụ: Phần xử lý menu thay vì select from menu thì sẽ là
    <include cache/menu/$idmenu ; > Tương tự phần xử lý nội dung cũng thế. Những thành phần không truy vấn nhiều hoặc thường xuyên đổi nội dung thì vẫn ko cần cache. Hoặc bạn cũng cache từng phần theo hướng trên.

    Vậy lần sau nếu gặp request tương tự thì nó chỉ kiểm tra có file đó có tồn tại hay không thôi.
    $idmenu = if(file_exists("$idmenu.html")) {$idmenuhtml;}
    else { include: $filexulymenu;}

    Giải pháp trên có điểm chú ý là tách từng phần ra nên giảm thiểu số lượng cache rất lớn. Cũng như giảm số lượng xử lý rất nhiều nếu gặp những trang gần giống. Ví dụ nếu gặp request với idmenu=2 và iddetail=26 nó chỉ xuất ra file html của detail: 26.html trong thư mục detail mà không cần phải xuất lại file 2.html trong thư mục menu. Như vậy nếu tổ chức tốt thì chả bao giờ cần truy cập database nếu đã có người từng truy cập trước đó.

    Ngoài ra việc kiểm soát request chặt chẻ trên viết theo đoạn nhỏ nữa sẽ chống việc hoàn toàn việc khai thác các lỗi bảo mật và DOS

    Nếu sửa tin tức đó thì sao? Thì chỉ việc xóa file tương ứng đã sửa. Ví dụ sửa trang tin với iddetail=11 thì chỉ việc xóa file 11.html trong thư mục detail là xong.

    Chỉ nghĩ trong đầu từ cách đây 4-5 năm trước, nay mới có dịp ghi lại nên có nhiều sai sót mấy bạn muốn có giải pháp hoàn thiện thì liên hệ để tôi có thể giúp nghiên cứu giải pháp hoàn thiện hơn. Xin vào phòng nghiên cứu của Vinagame ko được nên đầu quân vào đây.

    Hoàng Tùng
    Trưởng phòng nghiên cứu của O2bsoft
    http://o2bsoft.com
    Email: tunghn@o2bsoft.com
    Được sửa bởi chipT lúc 04:48 ngày 05-06-2010

  5. #25
    Tham gia
    18-05-2010
    Bài viết
    971
    Like
    0
    Thanked 1 Time in 1 Post
    chẳng hiểu nổi bác chủ topic đang hỏi gì?

  6. #26
    Tham gia
    17-03-2010
    Location
    Mê Linh - Hà Nội
    Bài viết
    517
    Like
    0
    Thanked 5 Times in 4 Posts
    Nhưng mà sẽ phải mất 1 lượng dung lượng tương đương số lưu trữ trong CSDL. Để xuất ra file. Như thế tốn dung lượng lưu trữ lắm. Nhưng mà có lẽ web nhớn. Có HDD space nhiều không lo lắm

  7. #27
    Tham gia
    19-10-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi hieuelin View Post
    Chủ đề này cũng không phải là mới nhưng rất đáng quan tâm với tất cả những ai đang là người thiết kế web.

    Nếu web có số lượng người truy cập thấp thì đây không là vấn đề đáng lo nhưng ngược lại thì quả là một vấn đề lớn .

    Mình thấy các trang web lớn đều dịch tin từ csdl ra dạng html nhưng chưa hiểu rõ nguyên tắc làm việc của những trang này.

    Nhờ các bạn có kinh nghiệm trong vấn đề này chỉ giáo giúp!
    Ý của tác giả nói là ko muốn ai đó truy cập CSDL ok giải pháp đơn giản nhé: các bạn đã thử sài httrack (Winhttrack) chưa? nếu chưa thì bạn thử google download sài thử . Mình hay sài cái này để download toàn bộ site với dạng HTML để về làm tài liệu. Có thể tốt cho tác giả.


    Quote Được gửi bởi thuyduongcd View Post
    Cũng chẳng có vấn đề gì lớn. Làm vậy chủ yếu để thu hút các công cụ tìm kiếm thôi chứ chẳng liên quan gì đến truy cập CSDL cả. Cũng chẳng phải dịch tin từ csdl ra dạng html
    Còn muốn biết nguyên tắc làm việc thế nào thì nên tìm hiểu về .htaccess
    Cách của bạn thuyduongcd ok sài htaccess.

    * Ngoài ra còn một cách nữa để tăng tốc độ truy cập các hạ mạn phép nói bừa.
    - HTML sài htaccess là có thể đổi đuổi rồi => OK.
    - Vậy làm sao để tốc độ nhanh, mình thấy lập trình viên thường có chế độ cache . Update dữ liệu tùy thuộc vào site của bạn. Nếu như dữ liệu của bạn cập nhật liên tục thì tạo time update ngắn hơn và ngược lại.

    -> Đơn giản thế thôi
    Được sửa bởi tuthancodon lúc 09:47 ngày 05-06-2010

  8. #28
    Tham gia
    17-02-2005
    Bài viết
    151
    Like
    0
    Thanked 2 Times in 1 Post
    Quote Được gửi bởi chipT View Post
    Nếu sửa tin tức đó thì sao? Thì chỉ việc xóa file tương ứng đã sửa. Ví dụ sửa trang tin với iddetail=11 thì chỉ việc xóa file 11.html trong thư mục detail là xong.
    Mình nghĩ nên update lại file HTML (php) ngay tại trang sửa tin tức, với cách làm tương tự ở trang post tin tức mới thì ta có thể bỏ khâu write ra file HTML từ frontend.

  9. #29
    Tham gia
    14-12-2008
    Bài viết
    1,343
    Like
    16
    Thanked 10 Times in 10 Posts
    nói vu vơ thế thôi . thực tế mới kiểm nghiệm được . thay vì xử lý đơn giản với csdl . bạn sẽ phải cật lực để chơi với đám dữ liệu html . cũng là 1 csdl thôi . thực tế mới phát sinh nhiều thứ khiến bạn muốn quay về với query thuần

  10. #30
    Tham gia
    17-02-2005
    Bài viết
    151
    Like
    0
    Thanked 2 Times in 1 Post
    À không, ý mình là kết hợp còn CSDL thì nhất quyết không bỏ, thay vì cứ mỗi cái content được gọi ra lại phải query vào cái bảng content chêt dịch với hàng cơ số records thì mình sẽ cache nó ra các file html, php rồi include phần nặng nhất này vào content page. Việc này có thể tạo nên hiệu ứng tốn space nhưng hiện mình thấy các hosting provider rất thoáng trong việc cung cấp space này, shared hosting chỗ nào cũng hô unlimited .

    Và tất nhiên đây chỉ là 1 ý tưởng, nó có thể sẽ làm cho các coder phải làm nhiều việc hơn, đau đầu hơn và tốn time hơn để quản lí thêm 1 mớ thao tác khác. Nhưng nếu mớ này mà giúp cho các site khủng chạy mượt hơn, bớt được lúa má thuê server thì cũng nên đấy chứ .

Trang 3 / 10 FirstFirst 1234568 ... LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •