Difference between revisions of "What's new in 4.5"
Jump to navigation
Jump to search
Line 23: | Line 23: | ||
* Added a new execution caching technique at the '''[[ns_adp_include]]''' level which allows you to save the results of execution of an included ADP and includes below that for reuse on subsequent connections up to a specified time. | * Added a new execution caching technique at the '''[[ns_adp_include]]''' level which allows you to save the results of execution of an included ADP and includes below that for reuse on subsequent connections up to a specified time. | ||
* Added '''singlescript''' config option which turns ADP pages into a single script enabling syntax such as "<% foreach e $list { %> element <%= $e %> here <% } %>". | * Added '''singlescript''' config option which turns ADP pages into a single script enabling syntax such as "<% foreach e $list { %> element <%= $e %> here <% } %>". | ||
− | * Added output buffer improvements via new Ns_ConnFlush. | + | * Added support for nested adp tags, i.e. you can now do <% ns_adp_puts [ns_adp_eval {<% ... %>} %> or use <% %> script within the body of a fancy tag. |
+ | * Added output buffer improvements via new Ns_ConnFlush. See '''[[ns_adp_close]]''' and '''[[ns_adp_flush]]''' | ||
* Added automatic UTF-8 to output charset encoding. | * Added automatic UTF-8 to output charset encoding. | ||
* Added gzip output compression. | * Added gzip output compression. | ||
* Added streaming output in chunked-encoding format instead of the previous "response with no length" HTTP/1.0 method. | * Added streaming output in chunked-encoding format instead of the previous "response with no length" HTTP/1.0 method. | ||
* Enhanced ADP error handling and reporting. | * Enhanced ADP error handling and reporting. | ||
− | * Added ability to trace ADP pages. Trace output is written to the server log. | + | * Added ability to trace ADP pages. Trace output is written to the server log. See '''[[ns_adp_ctl]]''' |
=== Other Improvements: === | === Other Improvements: === | ||
− | * New '''Ns_TclRegisterTrace''' API to enable callbacks at key state transition points in a much more natural way. The [[ns_ictl]] command has been updated to support script-level traces. | + | * New '''Ns_TclRegisterTrace''' API to enable callbacks at key state transition points in a much more natural way. The [[ns_ictl]] command, which now has a second and better name that should be used going forward - '''[[ns_interp_ctl]]''', has been updated to support script-level traces. |
* New '''Ns_Task''' API designed to replace the old Ns_SockCallback API which didn't do a very good job at managing timeouts along with I/O events. | * New '''Ns_Task''' API designed to replace the old Ns_SockCallback API which didn't do a very good job at managing timeouts along with I/O events. | ||
− | * New '''ns_returnmoved''' command to return 301 http status code and redirect to a new URL. | + | * New '''[[ns_returnmoved]]''' command to return 301 http status code and redirect to a new URL. |
+ | * New '''[[ns_internalredirect]]''' command to restart connection processing with a new URL. | ||
* New '''[[ns_cache]]''' command based on ideas from the ns_cache module. This is semi-backward-compatible with the ns_cache module. | * New '''[[ns_cache]]''' command based on ideas from the ns_cache module. This is semi-backward-compatible with the ns_cache module. | ||
* New '''[[ns_loop_ctl]]''' command to monitor and manage ''for'', ''while'', and ''foreach'' loops. | * New '''[[ns_loop_ctl]]''' command to monitor and manage ''for'', ''while'', and ''foreach'' loops. | ||
− | * Added '''ns_ictl package''' subcommand to [[ns_ictl]] command to handle loading of Tcl packages. | + | * Added '''ns_ictl package''' subcommand to [[ns_ictl]] / [[ns_interp_ctl]] command to handle loading of Tcl packages. |
* Added new '''[[ns_register_fastpath]]''' command to re-enable fastpath after a previous call to '''ns_register_proc'''. | * Added new '''[[ns_register_fastpath]]''' command to re-enable fastpath after a previous call to '''ns_register_proc'''. | ||
+ | * New '''[[ns_driver]]''' command to get some stats on socket drivers. | ||
+ | * -all switch added to '''[[ns_addrbyhost]]''' command. | ||
* Added ability to access more AOLserver functionality from a tclsh (nsv_*, ns_thread, etc). | * Added ability to access more AOLserver functionality from a tclsh (nsv_*, ns_thread, etc). | ||
* Stack checking has returned. In a multi-threaded application like AOLserver, stack checking is important for detecting buffer overruns and deep call trees blowing your thread stack, etc. | * Stack checking has returned. In a multi-threaded application like AOLserver, stack checking is important for detecting buffer overruns and deep call trees blowing your thread stack, etc. | ||
* More detailed information when logging uncaught Tcl errors. Especially for connection threads, details of the HTTP request are logged to make diagnosing the root cause of errors easier. | * More detailed information when logging uncaught Tcl errors. Especially for connection threads, details of the HTTP request are logged to make diagnosing the root cause of errors easier. |
Revision as of 19:11, 13 June 2010
This is a partial list of new features and major changes in AOLserver 4.5 (compared to 4.0). If you know of anything that is missing, please add it.
Connection Management:
These two commands can be used together to map slow running requests to a specific pool and to set limits to avoid overload.
- New ns_pools command to map method/URL's to specific thread pools.
- New ns_limits command control the number of threads executing and/or waiting for execution by method/URL.
- Note: The new scheme does not pick up connection thread pool configurations from earlier versions of AOLServer. Please see the new example configuration files, and the documentation for ns_pools and ns_limits, for instructions in upgrading your configuration.
- As of 1 August 2007, the HEAD revision contains "pools.tcl", which will handle many pre-4.5 configurations.
- There are known issues when using this feature in conjunction with virtual servers; see the SourceForge bug list (and development mailing list archive) for details.
I/O Features:
- New Ns_QueueWait API to enable event-driven callbacks in the driver thread before dispatching to pools for processing.
- The allows drivers to augment data received from the client (headers, request, content) with additional data fetched over the network (likely stored in the new Ns_Cls "connection local storage" API's) before dispatching to the connection threads. An example would be to add certain personalization data received via a web service. The rationale here is that I/O events are cheap so do those upfront instead of having expensive connection threads burdened with wasteful blocking I/O. This is a somewhat obscure and technical interface.
- Added ability to manage larger file uploads by spooling to a temporary file.
ADP Improvements:
- Added a new execution caching technique at the ns_adp_include level which allows you to save the results of execution of an included ADP and includes below that for reuse on subsequent connections up to a specified time.
- Added singlescript config option which turns ADP pages into a single script enabling syntax such as "<% foreach e $list { %> element <%= $e %> here <% } %>".
- Added support for nested adp tags, i.e. you can now do <% ns_adp_puts [ns_adp_eval {<% ... %>} %> or use <% %> script within the body of a fancy tag.
- Added output buffer improvements via new Ns_ConnFlush. See ns_adp_close and ns_adp_flush
- Added automatic UTF-8 to output charset encoding.
- Added gzip output compression.
- Added streaming output in chunked-encoding format instead of the previous "response with no length" HTTP/1.0 method.
- Enhanced ADP error handling and reporting.
- Added ability to trace ADP pages. Trace output is written to the server log. See ns_adp_ctl
Other Improvements:
- New Ns_TclRegisterTrace API to enable callbacks at key state transition points in a much more natural way. The ns_ictl command, which now has a second and better name that should be used going forward - ns_interp_ctl, has been updated to support script-level traces.
- New Ns_Task API designed to replace the old Ns_SockCallback API which didn't do a very good job at managing timeouts along with I/O events.
- New ns_returnmoved command to return 301 http status code and redirect to a new URL.
- New ns_internalredirect command to restart connection processing with a new URL.
- New ns_cache command based on ideas from the ns_cache module. This is semi-backward-compatible with the ns_cache module.
- New ns_loop_ctl command to monitor and manage for, while, and foreach loops.
- Added ns_ictl package subcommand to ns_ictl / ns_interp_ctl command to handle loading of Tcl packages.
- Added new ns_register_fastpath command to re-enable fastpath after a previous call to ns_register_proc.
- New ns_driver command to get some stats on socket drivers.
- -all switch added to ns_addrbyhost command.
- Added ability to access more AOLserver functionality from a tclsh (nsv_*, ns_thread, etc).
- Stack checking has returned. In a multi-threaded application like AOLserver, stack checking is important for detecting buffer overruns and deep call trees blowing your thread stack, etc.
- More detailed information when logging uncaught Tcl errors. Especially for connection threads, details of the HTTP request are logged to make diagnosing the root cause of errors easier.