看板 PHP 關於我們 聯絡資訊
如果在頁面產生時,直接將上一筆或下一筆的 ID 查詢出來做成連結也可以 但其實要實踐這個功能,未必「每次」讀取頁面都要去查詢 可以做成用到時再去查即可:) 上一篇,可以做成 <a href="showthread.php?t=2345&goto=up"> 下一篇,可以做成 <a href="showthread.php?t=2345&goto=down"> 意即,goto 編號為 2345 這篇主題的下一篇或上一篇 程式中只要寫個 switch 判斷 goto 變數 再依據之前前輩所言之方法查詢即可 這樣就只有使用到此方式時才會 query 並不會每次執行頁面都去 query 出上一筆與下一筆,可大幅減少運算 vBulletin 就適用此方式:) ※ 引述《postmaster (post master)》之銘言: : 假設是 view.php?id=$id ,通常就是如下: : 文章內容 : 上一筆 | 下一筆 : 這樣至少要執行3次SQL查詢。 : 當1萬人次時,那就要3萬次SQL查詢,只為了製造出上一筆、下一筆的連結 : 當10萬人次時,也就是30萬次SQL查詢了。 : 重點在於 : 辛苦製造出上一筆、下一筆的連結,使用者也不一定會去點它。 : 不管使用者會不會點選它,就已經事先「付出」了一定量的系統資源。 : 可以參考一下phpbb對於這種情形的處理。 : 雖然phpbb將原來需要3萬次SQL查詢、減為2萬次、甚至1萬次。 : 但呈現上還是有稍許bug : 至於資料庫取出幾筆的部分。 : 可以採class套件的方式來實作。 : 不論是MySQL、MSSQL、Oracle ... 這些都是可以處理的。 -- 台灣深藍vBulletin技術論壇 http://www.twvbb.com vBulletin 論壇系統,內建 「0 修改新增插件」「完整附件功能」 「無限深度子論壇」「進階權限管理」「前台 AJAX 即時管理」 歡迎研究:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.249.201
andreli:這樣點了上一篇或下一篇不是還會再query嗎? 06/14 17:08
postmaster:點了才會query、而非「未點前就必須query」 06/14 17:19
andreli:所以我有點疑惑,這篇的作法在資源上會減少嗎?謝謝指教 06/14 20:03
ckmarkhsu:會,因為不是每次都查詢,只有需要時才查詢 06/14 23:48
andreli:想請教goto=up那邊怎麼判斷? 06/15 08:21
andreli:因為我想不出來有goto那參數,跟沒有那參數有啥分別? 06/15 08:24
andreli:因為我覺得按下那個連結都還是要query的,是嗎? 06/15 08:25
appleboy46:就是因為你按下那個連結才需要阿 你不按的話 還需要嗎 06/15 21:37
andreli:那這樣的作法跟沒有加goto的作法差在哪裡? 06/15 23:17
andreli:我感覺加了goto反而還比較浪費資源。請指教,因為不是很懂 06/15 23:18
ckmarkhsu:如果不加 goto 就是要加上 &nid=xxx 意即下一篇文章的id 06/16 20:39
ckmarkhsu:所以無論你是否需要用到此功能,都要放類 2 個 query 06/16 20:39
ckmarkhsu:來查詢上一篇與下一篇的 ID,但如果你用此方式 06/16 20:40
ckmarkhsu:就只有要查詢時才會用到,可大幅減少查詢次數 06/16 20:40
ckmarkhsu:小聲說..在PHP版被m了五篇..結果一篇優文都沒有T T XD 06/16 20:46
sedc:我也是用ck大的方法,因為它不是在產生連結時就做查詢,而是 08/07 00:34
sedc:在按下時才查詢,所以如果看了一萬筆,就只會有一萬次查詢 08/07 00:35