Github user Yuanuo commented on the issue: https://github.com/apache/tomcat/pull/126 Ok. It has been closed, but I still want to express my views here. I am very sorry about my English level. These texts are all done with Google Translate. 1. In any actual environment, the resources and bandwidth of the server are limited, so the speed limit function is necessary. 2, Nginx, Apache, Lighttpd Web servers have Sendfile module to achieve high-performance data transmission. I am using Nginx now, the other two have not been studied. Nginx's Sendfile mode also supports speed limit, which is implemented using the "X-Accel-Limit-Rate" header. And the implementation principle of the speed limit is basically the same, in short, it is guaranteed to transmit only the bytes of certain data within one second, so the process/thread sleep wait will be generated. But does this speed limit feature make Nginx a low-performance web server? The answer is no, this feature will only work when you use it, but it is turned off by default. But this also provides a possibility for people to use. 3, we all know that Tomcat is not only used to transfer a few css or js, and according to the Tomcat implementation, to enable the Sendfile mode, the default sendfileSize is also 48KB, that is, only data larger than this amount will try to enable Sendfile transfer mode. In other applications, such as to do a file download server, you can't make any restrictions so that several download connections will run out of server bandwidth. 4, in the modern Web environment, generally do not directly use Tomcat as a Web server, but use Nginx+Tomcat or other working modes. If you are dealing with static resources, css, js, jpg, png, etc., most of them can be handed over to Nginx for direct processing without going through Tomcat. In this case, Tomcat's Sendfile will never be used. What does this mean? That is to say, the Sendfile function that everyone has to maintain will not be used, even if a lot of code is written to implement APR, NIO, NIO2 and other modes. 5, the code I submitted does not destroy the original working mode, which is what it is, these codes will not play any role by default. It will only be turned on after some parameters have been set. This gives people a possibility, but it is decided by people. On the contrary, even if there is a default high-performance NIO implementation of Sendfile, but people are worried that their server bandwidth is used up, and can not carry out any speed limit, then the default implementation of the Sendfile function will never be used, then everyone writes these What is the use of the code? Yes, you said that these requirements can be achieved by writing a Servlet or Filter yourself, yes, that's it. But everyone who uses Tomcat has to write a set of Servlets or Filters to implement this function. Who is the implementation of Tomcat's own implementation? I think this speed limit feature for Sendfile does not break any existing code and structure, but rather an enhancement to Tomcat. 6. Yes, there is no example of how to use it here. However, in the submitted code, the DefaultServlet has only been modified a few lines, and these lines (lines 2068-2070) are examples of how to use them. So some people may not have viewed the submitted code at all, and directly rely on other people's opinions to negate my code submission, showing that this is unacceptable, and I also doubt this kind of work attitude. Sorry! Since this has been closed, I am not going to describe the usage here. Finally, no matter what, I decided to use Nginx's Sendfile to achieve my needs. This is how I use it in my current PHP code. This submission will be abandoned.
--- --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org