目标:所有图像在首次加载时出现.
当前:如果幸运的话,第一次加载时会出现两三张图像; 需要页面引用才能查看所有图像.
这是我的第一个手工编写的网站.客户是设计师,所以高质量的图像很重要.性能和速度对我来说很重要,因为现在我的投资组合中,我不能接受部分功能的网站作为我的工作.
这是一个示例页面:
http://elisamantovani.com/pages/book_design.html
查看其他页面.同样的问题.
更新:
许多人建议缩小图像文件大小.不管怎样,只有少数图像很大,但现在它们都很好.没有图像大于200kb,大多数图像检查<100kb.问题依然存在.
谷歌建议阻止页面呈现的其他原因,例如渲染阻止JS/CSS.CSS应该阻止渲染直到加载,但不应该花费很长时间来加载.如果jQuery可以等到HTML/CSS渲染之后我想要它.
刚进入缓存控制.已将此添加到.htaccess提高性能一点点,但这只是将有助于后第一次加载,但需要的是对第一负载.
# One year for image files
<filesMatch ".(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
# One month for css and js
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>
Run Code Online (Sandbox Code Playgroud) 这是关于毕加索行为的一个关键点我不知道.
想象一下,你正在展示十件物品的幻灯片.比如,他们在屏幕上各持有十秒钟.
理想的行为是这样的:在幻灯片放映开始时,我只是执行以下操作:
picasso.get( url1 )
picasso.get( url2 )
picasso.get( url3 )
picasso.get( url4 )
picasso.get( url5 )
picasso.get( url6 )
picasso.get( url7 )
picasso.get( url8 )
picasso.get( url9 )
picasso.get( url10 )
Run Code Online (Sandbox Code Playgroud)
事实上,毕加索会一次一个地排队.
毕加索的行为是什么,如果我告诉它一次预热10个网址?
是否有可能让毕加索一次只做一件事,按顺序 - 是否有这样的选择?
(产生的其他问题是,你可以取消队列,还是......?)
感谢@alicanozkara在这个页面上的惊人答案我第一次了解到
https://github.com/facebook/fresco
(13k星)无论好坏,我认为毕加索时代可能已经结束了.
我有一个图像缩放功能,可以按比例调整图像大小.在每个图像上加载一个调用此函数的图像,如果其宽度或高度大于我的最大宽度和最大高度,则调整大小.我可以在FF Chrome Opera Safari中获得img.width和img.height但是IE失败了.我怎么处理这个?
让我用一段代码解释一下.
<img src="images/img01.png" onload="window.onImageLoad(this, 120, 120)" />
function onImageLoad(img, maxWidth, maxHeight) {
var width = img.width; // Problem is in here
var height = img.height // Problem is in here
}
在我的高亮度行中,img.width不适用于IE系列.
有什么建议吗?
谢谢.
有没有人有他们可以推荐的Android网络图像加载器库的经验?具体来说,我在研究中看到了这两个,但不确定是否更好或更广泛地使用.任何人都可以强调两者之间的差异或利弊吗?
https://github.com/novoda/ImageLoader
要么
我正在使用imageLoader类从url加载图像.但是那些所有图像都通过名为LazyList的文件夹名称存储在库中.它需要高达40 -100 MB的内存.但我不想加载图像,因为用户可能会感到不适.对不起英语不好.
一切正常但它在图库中创建了一个文件夹,并显示了我的应用程序正在使用的所有图像.所以我觉得用户会觉得用户不舒服.
这是我的imageloader代码,甚至还与其他几个类链接
public class ImageLoader {
MemoryCache memoryCache = new MemoryCache();
FileCache fileCache;
private Map<ImageView, String> imageViews = Collections
.synchronizedMap(new WeakHashMap<ImageView, String>());
ExecutorService executorService;
public ImageLoader(Context context) {
fileCache = new FileCache(context);
executorService = Executors.newFixedThreadPool(5);
}
final int stub_id = R.drawable.abs__ab_bottom_transparent_light_holo;
public void DisplayImage(String url, ImageView imageView) {
imageViews.put(imageView, url);
Bitmap bitmap = memoryCache.get(url);
if (bitmap != null)
imageView.setImageBitmap(bitmap);
else {
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
}
}
private void queuePhoto(String url, ImageView imageView) {
PhotoToLoad p = new …Run Code Online (Sandbox Code Playgroud) 我想知道Picasso Library究竟是如何在应用程序中缓存图像的.我知道它使用HttpHeaders来检查天气以从网络中获取图像.
但是,有没有时间框架缓存图像?
就像在一天之后无效的缓存一样?
问题是我的项目是从网络上加载大量的小图像.有时,新图像会在下次发布时反映出来.但是,有时候,事实并非如此.
最糟糕的是,一些图像反映了变化,而其他图像则不是同时发生的变化.
但是,当我卸载App时,所有图像都反映了这些变化(当然.)
毕加索必须有一些关于缓存的东西.
请不要告诉我使用OkHttp来控制Picasso中的缓存.
我的项目是使用Apache的AsyncHttpClient,它太大了,无法更新.
(当然不是我.我只是用UrlConnection创建一个小型网络助手,而不是实现整个AsyncHttpClient.)
无论如何,任何想法或指针将不胜感激.
底线:没有OkHttp.只想了解Picasso上的缓存控制机制.
问候
我正在使用Glide图像加载器从特定URL加载图像,现在如果我将图像更新为相同的URL,Glide仍在我的imageview中显示缓存的图像.如何从同一个URL重新加载图像?
WhatsApp开发人员最近改进了图像加载,其中立即加载图像的某些部分(获取其尺寸和图像的一些像素),然后在加载整个图像后,用完整图像替换占位符:

我的问题是,他们是如何实现的?他们是通过读取标题(元数据)来读取图像的维度吗?图像内容怎么样?或者他们在服务器端有两个版本的图像,一个较小的图像是先加载的还是一个较大的一个是完整的图像?请注意,如果它是第二种方法,那么一旦从发送方接收图像,它们仍然需要在服务器端提取较小版本的图像.还有其他方法吗?
I'm looking for an answer half a day, but I can't find anything although I thought it is a common problem. My Problem:
I have a ListView which has items of different sizes (heights). Every item contains an ImageView. The Image for this ImageView is loaded in background by an ImageLoader class:
imageLoader.DisplayImage(url, holder.image);
Run Code Online (Sandbox Code Playgroud)
If i scroll down the ListView everything works fine. the images are loaded and display (of course at the bottom of the screen/list).
But If …