lighttpd 1.4.x
https://www.lighttpd.net/
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() Summary: A new SSI directive, "ssi.conditional-requests", allows to inform lighttpd which SSI pages should be considered as cacheable and which should not. In particular, the "ETag" & "Last-Modified" headers will only be sent for those SSI pages for which the directive is enabled. Long description: "ETag" and "Last-Modified" headers were being sent for all SSI pages, regardless of whether they were cacheable or not. And yet, there was no cache validation at all for any SSI page. This commit fixes these two minor issues by adding a new directive, "ssi.conditional-requests", which allows to specify which SSI pages are cacheable and which are not, and by adding cache validation to those SSI pages which are cacheable. And since sending ETags for non-cacheable documents is not appropriate, they are no longuer computed nor sent for those SSI pages which are not cacheable. Regarding the "Last-Modified" header for non-cacheable documents, the standards allow to either send the current date and time for that header or to simply skip it. The approach chosen is to not send it for non-cacheable SSI pages. "ETag" and "Last-Modified" headers are therefore only sent for an SSI page if ssi.conditional-requests is enabled for that page. The ssi.conditional-requests directive can be enabled or disabled globally and/or in any context. It is disabled by default. An index.shtml which only includes deterministic SSI commands such as: <!--#echo var="LAST_MODIFIED"--> is a trivial example of a dynamic SSI page that is cacheable. |
7 years ago | |
---|---|---|
cmake | 8 years ago | |
doc | 7 years ago | |
src | 7 years ago | |
tests | 7 years ago | |
.gitignore | 8 years ago | |
AUTHORS | 13 years ago | |
CMakeLists.txt | 8 years ago | |
COPYING | 17 years ago | |
INSTALL | 17 years ago | |
Makefile.am | 8 years ago | |
NEWS | 7 years ago | |
README | 12 years ago | |
README.FreeBSD | 8 years ago | |
SConstruct | 8 years ago | |
autogen.sh | 10 years ago | |
config.py-sample | 18 years ago | |
configure.ac | 7 years ago | |
distribute.sh.in | 17 years ago | |
packdist.sh | 8 years ago |
README
======== lighttpd ======== ------------- a light httpd ------------- :author: Jan Kneschke :Date: $Date: 2004/11/03 22:25:54 $ :Revision: $Revision: 1.8 $ :abstract: lighttpd a secure, fast, compliant and very flexible web-server which has been optimized for high-performance environments. It has a very low memory footprint compared to other webservers and takes care of cpu-load. Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression, URL-Rewriting and many more) make lighttpd the perfect webserver-software for every server that is suffering load problems. :documentation: http://wiki.lighttpd.net/ the naming ---------- lighttpd is a __httpd__ which is - fast as __light__ning and - __light__ when it comes to memory consumption and system requirements Features -------- Network ``````` - IPv4, IPv6 Protocols ````````` - HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt) - HTTP/1.1 (http://www.ietf.org/rfc/rfc2616.txt) - HTTPS (provided by openssl) - CGI/1.1 (http://CGI-Spec.Golux.Com/) - FastCGI (http://www.fastcgi.com/devkit/doc/fcgi-spec.html) Advanced Features ````````````````` - load-balanced FastCGI (one webserver distributes requests to multiple PHP-servers via FastCGI) - custom error pages (for Response-Code 400-599) - virtual hosts - directory listings - streaming CGI and FastCGI - URL-Rewriting - HTTP-Redirection - output-compression with transparent caching FastCGI-Support ``````````````` - parses the Response-header and completes the HTTP-header accordingly - Keep-Alive handling based on Content-Length header PHP-Support ``````````` - same speed as or faster than apache + mod_php4 - handles various PHP bugs in the FastCGI SAPI - includes a utility to spawn FastCGI processes (necessary for PHP 4.3.x) Security features ````````````````` - chroot(), set UID, set GID - protecting docroot HTTP/1.1 features ````````````````` - Ranges (start-end, start-, -end, multiple ranges) - HTTP/1.0 Keep-Alive + HTTP/1.1 persistent Connections - methods: GET, HEAD, POST - Last-Modified + If-Modified handling - sends Content-Length if possible - sends Transfer-Encoding: chunk, if Content-Length is not possible - sends Content-Type - on-the-fly output compression (deflate, gzip) - authentication: basic and digest (http://www.ietf.org/rfc/rfc2617.txt) HTTP/1.1 compliance ``````````````````` - Sends 206 for Range Requests - Sends 304 for If-Modified Requests - Sends 400 for missing Host on HTTP/1.1 requests - Sends 400 for broken Request-Line - Sends 411 for missing Content-Length on POST requests - Sends 416 for "out-of-range" on Range: Header - Sends 501 for request-method != (GET|POST|HEAD) - Sends 505 for protocol != HTTP/1.0 or HTTP/1.1 - Sends Date: on every requests Intended Audience ----------------- - Ad-Server Front-Ends ("Banner-Schleuder") - delivering small files rapidly - php-servers under high load (load-balancing the php-request over multiple PHP-servers) Works with ---------- It has been tested to work with - IE 6.0 - Mozilla 1.x - Konqueror 3.1 (for Keep-Alive/Persistent Connections, Accept-Encoding for PHP + gzip) - wget (for Resuming) - acrobat plugin (for multiple ranges) Works on -------- lighttpd has been verified to compile and work on - Linux - FreeBSD - NetBSD - Solaris 8 + 9 - SGI IRIX 6.5 missing for HTTP/1.1 compliance ------------------------------- - parsing chunked POST request ----------------- Starting lighttpd ----------------- As daemon in the background: :: $ lighttpd -f <configfile> or without detaching from the console: :: $ lighttpd -D -f <configfile>