2010-07-29 37 views
2

希望你度過一個美好的一天。在.NET頁面中進行分頁的最佳方法

我有一個頁面讓用戶瀏覽其他用戶發佈的相關項目(相冊)。 我會顯示每個專輯的專輯縮略圖,標題,作者,評分視圖和類別。

現在相關項目的數量可能會變大說500相冊與用戶正在查看的相冊相關。我只顯示前20個,並放下一個鏈接,說'查看全部'

一旦用戶點擊查看全部,我將他帶到一個頁面,每頁顯示50項。

方法1:使用一箇中繼器\電網控制 當用戶點擊一個網頁,我得到了正確的項目(使用SQL),並將結果綁定到網格 的頁面刷新和用戶看到新的一頁。所以一個大的請求和用戶會看到所有的大拇指。

選項2: 當用戶點擊我使用Ajax獲得縮略圖文件名,標題,評分,作者等 後來我手動構建網格和使用JavaScript 設置元素的src屬性然後我追加尋呼機由此產生的網格爲div。用戶看到沒有頁面刷新的新網格。

我的顧慮: 我在文件系統(不是數據庫) 在第二種方法的JavaScript將派出50個單獨的請求的Web服務器,以獲得的影像文件的縮略圖和所有圖像文件。這將導致Web服務器上的很多請求。大型併發用戶將使用映像文件請求來氾濫服務器。

什麼是最好的&有效的方式來做分頁和存儲用戶文件?

由於該應用程序應該處理數百萬張照片,我的應用程序會因將圖像放入文件系統而死亡嗎?

回答

2

如果您還沒有使用CDN(內容分發網絡,如Amazon S3等),將會有所幫助(因此您可以同時從多個位置下載)。

而不是請求一個圖像,請求從服務器的頁面。讓服務器決定返回多少圖片。

你可以嘗試一些CSS精靈技術。

+0

無法關注。請描述CDN – kheya 2010-07-29 22:44:04

+0

@Projapati爲您排除了首字母縮略詞 – 2010-07-29 23:04:13

+0

@Projapati - CDN基本上是一個用於提供內容的地理位置網絡服務器。它們通常用於分離Web應用程序服務器和靜態內容服務器之間的負載。它們通常也位於地理位置,因此內容將從離最終用戶最近的服務器提供,以提高頁面的整體性能和加載時間。 – 2010-07-30 03:05:47

2

Definetely你不應該使用選項1,因爲它會佔用大量的時間,網頁載入

Aldso第二個選擇ID不是那麼好無論是。

您可以使用您的GridView/ListView控件,但使用服務器端分頁來獲取數據。這樣您就可以只加載每頁所需的信息。

你可以看到如何實現服務器端分頁此存儲過程:http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005

然後你就可以在個人頁面PageIndexChanging事件處理程序綁定你的GridView 所以只有那些需要的是實際加載的頁面。

+1

這和提到的選項1沒有區別。 我在sql存儲過程中分頁。 問題不在於sql分頁,它是獲取所有縮略圖。 綁定到網格控件並在加載過程中獲取所有圖像大拇指還是使用javascript發送單獨的img請求更好? – kheya 2010-07-29 22:41:49

+0

然後第一個選項可以確定。但是你必須小心頁面的總體大小:由於50張圖片很多,它們的尺寸應該很小(我的意思是KB),所以所有的圖片都不需要太多的加載。 – 2010-07-29 22:55:25

+0

大拇指每個2-5 kbs – kheya 2010-07-29 23:06:54

相關問題