我正在为我的照片存档构建缩略图查看器,并且需要将数千张照片加载到单个网页上。缩略图已经从原始照片JPG通过ImageMagick + MozJPEG进行了下采样,均在100x100px范围内,每个都是1-3 KB。
例如,Chrome可以处理包含2500多张图片的页面没问题。慢速部分是请求图像,即处理2500多个HTTP请求。 HTTP / 2.0是否提供了其他选项来简化这些请求?我想避免创建分块马赛克图像,然后我将其编入网页(我需要能够看到每个图像的文件名),但这是我现在能想到的最好的解决方法。
答案 0 :(得分:1)
HTTP / 2将使许多比同类HTTP / 1方法更多的并行传输(通常至少100并行,比此多很多倍)。由于压缩,每个传出请求都会变小。
使用HTTP / 1,浏览器的典型性为每个主机名6个连接,并且通常不启用流水线操作,这使得客户端在发送下一个请求之前等待响应。因此,如果您使用大量主机名来分发图片,您可以获得许多并行传输,但这将使用更多资源,但效率仍然低于HTTP / 2.
HTTP / 1方法的一个好处是,您可以为每个连接(在TCP慢启动期间)获取一次初始窗口以发送请求,而对于HTTP / 2,您只能获得一个初始窗口。
答案 1 :(得分:0)
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.PushBuilder;
public class SimpleImagePush extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String contextPath = req.getContextPath();
PushBuilder pb = req.getPushBuilder();
for(int x=1;x<2500;x++)
{
pb.path(picturepath).push(); // picturepath is the path of the image in the server system. Adjust your filenames accordingly to use a for loop
}
}