我是網頁設計的新手。如果我的理解錯誤,請糾正我。我正在尋求建議,以避免在以下情況下瀏覽器和服務器之間的往返。避免從服務器反覆重複圖像
想象的JavaScript首先下載從服務器中所有30〜50幅圖像。這些圖像然後用於構建縮略圖圖像,每個圖像尺寸爲60px x 60px左右,供用戶選擇。這種效果是用CSS和一些免費提供的JavaScript庫實現的。
縮略圖像一個被點擊後,javasrcipt然後放在一個更大的畫布圖像。較大圖像的尺寸根據其原始尺寸約900px X 600px或更大來確定。爲了獲得圖像的原始大小,我類似的代碼如下因素在客戶端的JavaScript:
var img=new Image();
img.src="uploaded1.jpg";
var w,h;
w=img.width;
h=img.height;
我的問題是,這樣的設計顯得非常低效在交通方面,因爲每個圖像將被下載3次:
- 爲JavaScript代碼之後渲染到圖像庫
- 在
img.src="uploaded1.jpg";
- 大尺寸圖像的描繪執行DOM節點已經由JavaScript添加後:
<img src="uploaded1.jpg" alt="big image"/>
此外,我想允許用戶隨時上傳更多圖片並將這些圖片添加到圖片庫中。爲了實現這一點,一些JavaScript的設計必須準確地下載相同的圖像,這同一個瀏覽器剛剛上傳到服務器,從服務器,以便它們可以被添加到DOM這樣的:
<img src="new1.jpg" alt="new image 1"/>
<img src="new2.jpg" alt="new image 2"/>
是什麼對我來說沒有意義的是這些圖像所產生的瀏覽器和服務器之間的往返旅程。當瀏覽器獲得這些圖像的第一手信息時,瀏覽器顯然不需要從服務器重新加載相同的圖像。
因爲它是這些上傳圖像文件和渲染圖像相同的瀏覽器,理論上應該存在某種方式告訴瀏覽器重複使用這些圖片 - 前或在上傳之後使它們。該頁面必須設計爲以這種低效率的方式工作,這僅僅是因爲在HTML世界中,JavaScript無法通過操作DOM將內存中的圖像傳送到瀏覽器。
SVG的local IRI reference可能會有所幫助。我可以在<defs>
好嗎實施<image>
元素,但我不知道瀏覽器(IE 9尤其是)將再次每到這個<image>
被其他元素引用時盲目檢索服務器相同的圖像。關於SVG的啓示將不勝感激。
我也讀過關於http /瀏覽器緩存的文章,並且得到了瀏覽器緩存不可靠的印象,因爲用戶可以手動禁用緩存,並且緩存大小對於大量圖像可以設置得太小。此外,高速緩存機制無法消除不必要的往返行爲,如前面提到的「上傳然後下載圖像添加到圖庫」場景。
順便說一句,一晃就是我想學習和使用的最後一件事。
最好的問候,
CN
enter code here