页面上可能在不同位置,需要不同尺寸的图片比如发表了一篇文章,上传标题图片,生成了一张原图580*700的和一个宿略图100*100的如果我要在首页调用这个图片,尺寸是200*240的,怎么办, 是对580*700的原图限定width为200吗?(加载原图影响性能吧)还是上传图片时,把需要的尺寸图全部上传上去(这样也不太好吧,比如我在首页或其它页面使用的尺寸都不同,岂不是要上传很多的不同尺寸的图片)有没有什么好的解决方案

解决方案 »

  1.   

    我们网站的做法是传一张图  就生成七张大小不同的图存储起来.   这七张是根据需求设定好的  然后在对应位置调用对应尺寸的图片
    如果用img标签的width height强行缩放  网页会卡.
      

  2.   

    一般都缩小到各种尺寸,别以为这是省略存储空间
    比较一下100k到10k缩小前后的流量,设定有10个页面用到这张图,每天1万人访问,都看满了这10页,并假设客户端缓存足够一天的浏览量(当天刷新页面不重新传送图片)100k*10*10000*30=300G/月
    缩小后自然就除以10,30G/月这只是一张图片只用于10个页面,还没计算页面刷新、更多图片、更多页面调用(别小看“转载”啊)的情况
    所以越大的站,越要减少图片字节数,当然是按需要,不能一味只求省流量,也要顾及服务质量至于图片站展示原图那是另一回事,那是从服务质量角度考虑的,而且原图极少在多个页面重复展示
      

  3.   

    嗯,纠正一下上面的错误,如果同一张图(url相同),客户端使用缓存并已存在此图的话,无论多少个页面,都不会重复传,但不同的浏览器,还是少不了的
      

  4.   

    数据库结构怎么设计?有七个不同的尺寸标题图,建七个字段存放吗?我举个例子比如图片123.jpg数据库存123.jpg七张大小不同的图片是 a_123.jpg   b_123.jpg ... 数据库里只存一条..... 程序调用的时候加上尺寸对应的前缀即可.
      

  5.   

    我的做法是用php動態產生各種尺寸的圖片,例如
    <img src="img.php?src=a.jpg&width=100&height=200"...
    <img src="img.php?src=a.jpg&width=200&height=200"...
    <img src="img.php?src=a.jpg&width=300&height=200"...我這個a.jpg就是原圖,每次用戶在請求的時候傳遞不同的尺寸到服務器,服務器則會調用img.php動態調整原圖為客戶要求的尺寸,調整完畢之後直接輸出到客戶端,這個動態輸出的圖片並未被直接存儲到服務器上,這種做法的好處是不用存儲多個圖片,也不擔心流量問題,但是他會佔用服務器的cpu處理能力.
      

  6.   


    请问和直接读文件比 响应速度如何?比直接讀取預存的多個尺寸的圖片速度要慢,原因如下:直接讀取已存檔的圖片只需要消耗網絡帶寬,而我的做法則需要cpu首先調整圖片的尺寸再輸出到客戶端,所以多了一個步驟.至於慢多少就要看服務器的cpu速度了.
      

  7.   


    请问和直接读文件比 响应速度如何?比直接讀取預存的多個尺寸的圖片速度要慢,原因如下:直接讀取已存檔的圖片只需要消耗網絡帶寬,而我的做法則需要cpu首先調整圖片的尺寸再輸出到客戶端,所以多了一個步驟.至於慢多少就要看服務器的cpu速度了.明白了 不过这个思路不错 之前我没有想到应该会有地方可以用到,不常用的图片之类的
      

  8.   


    请问和直接读文件比 响应速度如何?比直接讀取預存的多個尺寸的圖片速度要慢,原因如下:直接讀取已存檔的圖片只需要消耗網絡帶寬,而我的做法則需要cpu首先調整圖片的尺寸再輸出到客戶端,所以多了一個步驟.至於慢多少就要看服務器的cpu速度了.明白了 不过这个思路不错 之前我没有想到应该会有地方可以用到,不常用的图片之类的這種做法的好處是只需要在服務器上存儲一張原圖即可,不需要考慮多圖問題,缺點是會有額外的cpu開銷
      

  9.   


    请问和直接读文件比 响应速度如何?比直接讀取預存的多個尺寸的圖片速度要慢,原因如下:直接讀取已存檔的圖片只需要消耗網絡帶寬,而我的做法則需要cpu首先調整圖片的尺寸再輸出到客戶端,所以多了一個步驟.至於慢多少就要看服務器的cpu速度了.明白了 不过这个思路不错 之前我没有想到应该会有地方可以用到,不常用的图片之类的我也想过这种做法,比如在循环输出文章列表时,每输出一篇文章都要调用img.php输出缩略图
    如果网站访问量大,这样网站可能变得很慢
      

  10.   

    访问量大还是老老实实做静态文件吧
    像#1的做法,每当有上传图片就执行转换,保存几种固定尺寸的图片—— 一劳
    然后在不同页面调用适合的尺寸,虽然不一定就完全和页面要求一致,但用html轻微改变width/heigh影响不大—— 永逸更大的站还要cdn缓存呢