我正在运行一个Silverlight浏览器外桌面应用程序,它从HTTP服务器下载一堆图像.看起来好像Silverlight有一个用于图像的本地图像缓存,甚至是应用程序的多个实例.如果我更新HTTP服务器上的图像,我希望更新的图像显示在Silverlight应用程序中,而不是存储在Silverlight图像缓存中的图像版本.如何清除机器上的图像缓存?
清除我的Web浏览器的图像缓存在此处不起作用,因为Silverlight应用程序作为浏览器外桌面应用程序运行.
注意:我对以编程方式清除缓存不感兴趣,我希望能够通过更改我的机器上的设置(禁用图像缓存)或删除存储图像的目录来实现此目的.
我正在使用Intervention/imagecache来缓存我的图像.但是,缓存图像的加载速度比源图像文件慢.几乎额外的60-70毫秒的时间latancy(测试铬检查元件网络)
这是我在Route.php上加载图像的代码
Route::get('images/cars/{src}', function ($src){
$cacheimage = Image::cache(function($image) use($src){
return $image->make("images/products/".$src);
},1440);
return Response::make($cacheimage,200, array('Content-Type'=>'image/jpg'));
});
Run Code Online (Sandbox Code Playgroud)
在刀片中
<img src="{{ URL::asset('/images/cars/theimage.jpg' }}" alt="">
Run Code Online (Sandbox Code Playgroud)
存储图像缓存的任何想法或更好的方法?
我在我的项目中使用picasso库将服务器中的url图像提取到我的ImageView中,但不幸的是毕加索从光盘加载以前缓存的图像而不是从url加载新图像.请找下面的代码供您参考.
Picasso.with (ImageActivity.this)
.load(url)
.placeholder (R.drawable.default_user)
.error (R.drawable.default_user)
.into(imgUser);
Run Code Online (Sandbox Code Playgroud)
我也尝试过以下解决方案:
Picasso.with(ImageActivity.this).invalidate(url);
Run Code Online (Sandbox Code Playgroud)
和
Picasso.with (ImageActivity.this)
.load(url).memoryPolicy(MemoryPolicy.NO_CACHE)
.placeholder (R.drawable.default_user)
.error (R.drawable.default_user)
.into(imgUser);
Run Code Online (Sandbox Code Playgroud)
但没有什么对我有用.请帮我解决我的问题.
提前致谢.
我试图找出是否可以使用Alamofireimage强制将图像保存在磁盘上。查看源代码,我无法找到它实际将图像保存到磁盘的位置。有人知道吗?
我使用 Coil 库将图像加载到 Android 应用程序中。如果没有互联网,它会立即向我显示缓存的图像。但是当有互联网连接时,线圈会再次加载图像,并且有一段时间我会看到占位符。我认为这是一个非常奇怪的逻辑。即使有互联网连接,如何让它立即显示缓存的图像?
我当前的代码:
fun ImageView.setPhoto(photoLink: String) {
load(photoLink) {
crossfade(true)
placeholder(R.drawable.placeholder)
error(R.drawable.placeholder)
size(ViewSizeResolver(this@setPhoto))
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用imagecache_create_path()和getimagesize()来获取imagecache生成的图像及其尺寸的路径.但是,如果我们第一次访问该页面时图像尚不存在,并且imagecache_create_path也不会生成它.
这是代码:
// we get the image path from a preset (always return the path even if the file doesn't exist)
$small_image_path = imagecache_create_path('gallery_image_small', $image["filepath"]);
// I get the image dimensions (only if the file exists already)
$data_small = list($width, $height, $type, $image_attributes) = @getimagesize($small_image_path);
Run Code Online (Sandbox Code Playgroud)
是否有任何API方法来获取路径并生成文件?换句话说,我可以从PHP生成图像(使用预设)而不在浏览器中显示它吗?
先感谢您
如果图像已经缓存,我不想下载图像.我正在使用NOSTRA的ImageLoader库.请告诉我是否有办法做到这一点.以下是代码: -
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_sample)
.resetViewBeforeLoading()
.cacheInMemory()
.cacheOnDisc()
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.ARGB_8888)
.build();
imageLoader.displayImage(url2.toString()
,thumbnail,options, new
ImageLoadingListener() {
@Override
public void onLoadingStarted() {
// progressBar.setVisibility(grid.VISIBLE);
// grid.notify();
}
@Override
public void onLoadingFailed(FailReason failReason) {
//progressBar.setVisibility(grid.GONE);
// grid.notify();
}
@Override
public void onLoadingComplete(Bitmap bitmap) {
// progressBar.setVisibility(grid.GONE);
// grid.notify();
}
@Override
public void onLoadingCancelled() {
// progressBar.setVisibility(grid.GONE);
//grid.notify();
}
});
Run Code Online (Sandbox Code Playgroud) 我正在开发一个管理大量图像,存储和调整大小的Web应用程序.
图像的请求类似于:domain:port/image_id/size
服务器获取image_id,如果还没有这样大小的图像,则创建它并将其存储在文件系统上.
所以一切正常,服务器正在运行,但我需要在浏览器中缓存这些图像至少一天,以减少服务器带宽消耗.
我做了几次测试,但似乎没有任何效果.
这是我用来制作响应头的代码:
response.writeHead(304, {
"Pragma": "public",
"Cache-Control": "max-age=86400",
"Expires": new Date(Date.now() + 86400000).toUTCString(),
"Content-Type": contentType});
response.write(data);
response.end();
Run Code Online (Sandbox Code Playgroud)
我也尝试了响应状态200. contentType总是像mime类型,如"image/jpg"或"image/png"数据是图像的字节缓冲区.
有什么建议?非常感谢.
健康长寿·繁荣昌盛,
d.
我正在尝试使用RecylerView最近推出的Google.我有一组行,现在是7-8,每行都有一个我从服务器获取的图像.为此,我使用毕加索图书馆,但这对我不起作用.我不确定我是否遗漏了某些东西或配置了什么.
屏幕正确显示每行的默认图像,但不从服务器下载图像,如果服务器响应缓慢,我等待超过5分钟,但事实并非如此.
码
public DemoRecyclerAdapter(List<DemoRowModel> items, int itemLayout, final Context mContext) {
this.items = items;
this.itemLayout = itemLayout;
this.mContext = mContext;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
DemoRowModel item = items.get(position);
holder.mDemoNameTextView.setText(item.getDemoName());
holder.mDemoDateTextView.setText(item.getDemoDate());
Target mTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
holder.mImageView.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable drawable) {
Logger.d(TAG, …Run Code Online (Sandbox Code Playgroud) 我正在查看Nimbus项目中的NINetworkImageView,并对于默认的缓存设置很好奇.一旦我调用setPathToNetworkImage并加载图像,它是否会进入全局缓存?如果我们使用相同的pathToNetworkImage创建另一个networkImageView并因此避免网络请求,它是否足够智能以实现它是相同的图像?
它是默认存储在内存还是磁盘中?什么是默认缓存持续时间?
这与关于Volley Image缓存的这个问题有关.所以,现在我想实现DiskLruCache,但我不知道如何做到这一点.
我从github下载了Jar文件并将其添加到我的项目中.
接下来我该怎么办?如何更改Volley的现有代码并集成DiskLruCache?
现有代码:
初始化排球:
queue = Volley.newRequestQueue(getActivity());
imageLoader = new ImageLoader(queue, new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(
10);
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
});
Run Code Online (Sandbox Code Playgroud)
从服务器获取响应并解析:
jsArrayRequest = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if (Const.DEBUGGING) {
Log.d(Const.DEBUG,
"Response => " + response.toString());
Log.d(Const.DEBUG, "Length = " + response.length());
}
parseResponse(response, …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,它在服务器上使用 PHP 生成图像,格式为 image.png。然后我在不同的地方使用这个图像<img src="http://domain.com/images/image.png" />。
我遇到的问题是,尽管图像每 30 分钟重新生成一次,但它似乎已被缓存,并且在我访问http://domain.com/images/image.png之前不会显示新值进而ctrl+shift+refresh。
有什么方法可以保持图像名称相同,但使其始终显示图像的最新版本?
根据文档,
内部缓存工厂将磁盘缓存放置在应用程序的内部缓存目录中,并设置最大大小为250MB。
当我尝试在我的应用程序中实现一些脱机功能时,可能需要大于250MB的缓存大小。那么Glide是否允许修改缓存大小,或者我需要找到一种替代方法?如果是这样,我应该遵循什么机制?
我在文档中看到了一种增加这种方法的方法。
builder.setDiskCache(
new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
Run Code Online (Sandbox Code Playgroud)
如何在我的代码中实现呢?
image-caching ×13
android ×6
php ×3
caching ×2
image ×2
ios ×2
picasso ×2
apache ×1
coil ×1
diskcache ×1
drupal ×1
html ×1
http-caching ×1
imageview ×1
laravel-4 ×1
nimbus-ios ×1
node.js ×1
response ×1
silverlight ×1
swift ×1