我正在做这样的事情:如果图像缓存在用户的计算机上,并且其时间戳与服务器上的时间戳相同,则显示缓存版本;否则,请勿从服务器加载图像。
我想也许JavaScript可以做到这一点,所以我将这篇文章标记为javascript。如果不合适,请帮我重新标记。
编辑:在这里,我详细介绍了我要实施的内容。我正在开发类似于基于Web的文件浏览器,只有当用户单击每个图像旁边的“视图缩略图”按钮时才会加载缩略图。如果已经缓存了缩略图,请使用缓存版本;否则,显示通用图像图标。
答案 0 :(得分:1)
这对我来说有点奇怪。
您将功能描述为显示文件列表,并为用户提供单击“查看缩略图”的选项。这意味着如果用户专门请求图像,它将仅尝试从服务器加载图像 - 因此您已经停止了大量图像的大量加载的可能性。
因此,如果图像不在我的浏览器缓存中,那么在我第一次访问时将没有,那么我将获得通用图像图标。在我下次访问时,图像仍然不在我的缓存中,因此我将再次获得通用图像图标。那么除了通用图片图标外,我怎么会看到任何东西?
现在进入一个我承认不符合您要求的解决方案,但这是此类软件的典型实现。
答案 1 :(得分:1)
我的RSS阅读器,对于包含大量帖子的Feed,会加载整页帖子。条目数取决于实际窗口的大小。当我滚动到列表底部时,如果有更多帖子,它将加载另一页。
这适用于您的文件浏览器吗?这意味着用户总是会加载20个缩略图,但除非有必要,否则永远不会加载。我从未使用过要求我点击查看缩略图的文件浏览器。
答案 2 :(得分:0)
这不是你必须担心的事情。浏览器会自动为您执行此操作。您必须确保服务器正在发送正确的标头。它有助于对文件进行适当的缓存设置,以避免额外的HEAD请求。
答案 3 :(得分:0)
你难道不能在服务器上移动/删除/重命名吗?然后使用javascript Image.onError处理损坏的图片,以隐藏没有缓存图片的人的损坏图片标记。
我认为这会为那些在其broswer chache中拥有它的人显示缓存版本。其他人不会做任何事情
答案 4 :(得分:0)
浏览器可以发送“If-Modified-Since”和“ETag”标头,以向服务器指示它确实具有资源版本。查看有关这些标题的W3 caching rules。
您可以在服务器上查询这些标头,如果找不到,则发回通用图标,如果找到则返回“304 Not Modified”响应。