我正在为两个无偿网站编写和使用一个非常简单的基于CGI(Perl)的内容管理工具.它为网站管理员提供HTML表单,用于填写字段(日期,地点,标题,描述,链接等)的事件并保存.在该表单上,我允许管理员上传与事件相关的图像.在显示表单的HTML页面上,我还显示了上传图片的预览(HTML img标签).
当管理员想要更改图片时,会发生此问题.他只需点击"浏览"按钮,选择一张新照片然后按确定即可.这很好用.
上传图像后,我的后端CGI处理上传并正确地重新加载表单.
问题是显示的图像没有刷新.即使数据库保存正确的图像,仍会显示旧图像.我已将其缩小到图像在Web浏览器中缓存的事实.如果管理员点击Firefox /资源管理器/ Safari中的RELOAD按钮,则所有内容都会刷新,并且只会显示新图像.
我试图通过写一个过去很远的日期的HTTP Expires指令来控制缓存.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
请记住,我在管理方面,我并不关心页面是否需要更长时间才能加载,因为它们总是过期.
但是,这也不起作用.
上传图像时,其文件名不会保留在数据库中.它被重命名为Image.jpg(在使用时简单地说出来).使用新图像替换现有图像时,名称也不会更改.只是图像文件的内容发生了变化.
网络服务器由托管服务/ ISP提供.它使用Apache.
有没有办法强制Web浏览器不缓存此页面中的内容,甚至图像?
我正在使用数据库实际"保存文件名"的选项.这样,如果图像被更改,IMG标签的src也将改变.但是,这需要在整个站点进行大量更改,如果我有更好的解决方案,我宁愿不这样做.此外,如果上传的新图像具有相同的名称(例如图像有点照片并重新上传),这仍然无效.
我怎样才能获得Apache上的静态内容{被浏览器缓存}而不是{检查新鲜度{每次请求}}?
我正在Apache webserver上托管的网站上工作.最近,我正在使用标题(针对不同类型的内容的Content-Type)进行测试,并看到了很多对图像的条件请求.例:
200 /index.php?page=1234&action=list
304 /favicon.ico
304 /img/logo.png
304 /img/arrow.png
(etc.)
Run Code Online (Sandbox Code Playgroud)
虽然图像文件是静态内容并且由浏览器缓存,但每次用户打开链接到它们的页面时,它们都是有条件请求的,它们发送"304 Not Modified".这很好(传输的数据较少),但这意味着每次页面加载会产生20多个请求(由于所有这些往返行程导致页面加载时间更长,即使启用了Keep-Alive和流水线操作).
如何告诉浏览器保留现有文件而不检查更新版本?
编辑:mod_expires方法工作,即使使用favicon.
我有一个问题,用户报告他们的图像没有上传,旧图像仍在那里.仔细观察后,新图像就在那里,它们与旧图像的名称相同.我在上传时做的是我为了SEO目的重命名图像.当他们删除图像时,旧索引变为可用并被重用.因此它具有相同的图像名称.
有没有办法(我想可能有一个元标记)告诉浏览器不使用它的cahce?
更好的答案是将图像重命名为全新的.我将继续努力,但同时我在处理更大的问题时是快速的解决方案.
场景:
我有一个大的GIF图像,我想在用户首次使用Glide - 图像加载和缓存库打开应用程序时缓存.在用户打开应用程序之后,我想显示缓存版本(如果存在).此GIF URL将在给定间隔后过期.当它到期时,我会获取新的GIF URL并显示/缓存该URL以供将来使用.
我尝试了什么:
我在Glide的github页面上浏览了Caching和Cache Invalidation.我还去了谷歌集团的线程确保加载的图像仅来自磁盘缓存,它显示了如何获取图像格式缓存.我还经历了如何使某些特定图像问题的Glide缓存无效.
从上面的链接我看到以下代码片段,其中显示了如何从缓存加载图像.但是,这只会尝试从缓存中获取图像.如果它不存在于缓存中,则它不会尝试从网络获取并失败:
Glide.with(TheActivity.this)
.using(new StreamModelLoader<String>() {
@Override
public DataFetcher<InputStream> getResourceFetcher(final String model, int i, int i1) {
return new DataFetcher<InputStream>() {
@Override
public InputStream loadData(Priority priority) throws Exception {
throw new IOException();
}
@Override
public void cleanup() {
}
@Override
public String getId() {
return model;
}
@Override
public void cancel() {
}
};
}
})
.load("http://sampleurl.com/sample.gif")
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(theImageView);
Run Code Online (Sandbox Code Playgroud)
问题:
是否有更简洁的方法来实现以下功能:如果存在,则从缓存中显示GIF图像,然后下载GIF,将其缓存以供以后使用并在中显示ImageView …
我刚刚将用于缓存图像的代码从EGOImageCache更改为SDWebView.不幸的是我不知道如何设置自定义HTTP标头,因为我必须发送身份验证才能获取图像.使用EGOImageCache很容易,因为我已经在适当的地方扩展了NSURLRequest.但是我不知道如何使用SDWebView.framework来做到这一点.我看到标题,我在SDWebImageDownloader.h中找到了包含的方法
/**
* Set a value for a HTTP header to be appended to each download HTTP request.
*
* @param value The value for the header field. Use `nil` value to remove the header.
* @param field The name of the header field to set.
*/
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
/**
* Returns the value of the specified HTTP header field.
*
* @return The value associated with the header field field, or `nil` if there is no …
Run Code Online (Sandbox Code Playgroud) 04-25 08:19:10.111 2431-2603/com.example.francesco.guidedautorewithtabs E/art? Throwing OutOfMemoryError "Failed to allocate a 4194316 byte allocation with 1983651 free bytes and 1937KB until OOM"
04-25 08:19:10.114 2431-2603/com.example.francesco.guidedautorewithtabs E/AndroidRuntime? FATAL EXCEPTION: GLThread 285
Process: com.example.francesco.guidedautorewithtabs, PID: 2431
java.lang.OutOfMemoryError: Failed to allocate a 4194316 byte allocation with 1983651 free bytes and 1937KB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:817)
at android.graphics.Bitmap.createBitmap(Bitmap.java:794)
at android.graphics.Bitmap.createBitmap(Bitmap.java:761)
at com.google.maps.api.android.lib6.gmm6.o.c.l.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.o.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.o.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.o.b(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.b.ak.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.b.as.a(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud) performance android memory-leaks out-of-memory image-caching
我不知道如何在 Github Actions 中运行缓存的 Docker 映像。
我按照有关发布 Docker 映像的教程来实现缓存、构建 Docker 映像并将其推送到 DockerHub 的任务。
我需要构建、缓存和运行图像,图像发布是可选的。
我的目标是加快 CI 工作流程。
以下是 Github Actions 工作流程:
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个关于如何将从url加载的图像缓存到uitableview的单元格中的教程.
我在这里找到了一个例子
http://www.ericd.net/2009/05/iphone-caching-images-in-memory.html#top
但代码不完整.我是一个客观的新手所以我发现填补缺失的部分非常困难.
我正在使用Fresco库.
我在Fresco文档中找不到任何相关信息,如何从Fresco的磁盘缓存中获取图像文件?
我正在使用Glide在Android上下载和缓存图像.一切都很好,除了我不想直接加载位图ImageView
,我不想有淡入淡出动画,也不想有图像占位符.
我想要的只是创建一个全局方法,它将帮助我在整个应用程序中下载图像.
public class MyApp extends Application {
public static void downloadImage(String url, final OnImageLoadedCallback callback) {
// And how to implement the listener ?
RequestListener<String, Bitmap> requestListener = new RequestListener<String, Bitmap() {
@Override
public boolean onException(Exception exc, String string, Target<Bitmap> target, boolean isFirstResource) {
callback.onDone(null);
return false;
}
@Override
public boolean onResourceReady(Bitmap bitmap, String string, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {
callback.onDone(bitmap);
return false;
}
};
Glide.with(context)
.load(url)
.asBitmap()
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(requestListener);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何实现监听器.RequestListener …
image-caching ×10
android ×4
html ×2
apache ×1
browser ×1
caching ×1
cocoa-touch ×1
docker ×1
fresco ×1
http-headers ×1
image ×1
ios ×1
iphone ×1
java ×1
memory-leaks ×1
mod-expires ×1
performance ×1
sdwebimage ×1
uiimageview ×1
uitableview ×1