Load JavaScript and CSS from Server Nearby"
From Documentation
Jumperchen (talk | contribs) |
|||
Line 44: | Line 44: | ||
*/ | */ | ||
private boolean isStaticResource(String url) { | private boolean isStaticResource(String url) { | ||
− | return url.startsWith("~./") && (url.endsWith(".wpd") || url.endsWith(".wcs")); | + | // zul.lang.wpd should not be a static resource |
+ | return url.startsWith("~./") && !url.endsWith("zul.lang.wpd") && (url.endsWith(".wpd") || url.endsWith(".wcs")); | ||
} | } | ||
Revision as of 07:20, 27 May 2014
If some of the client machines are far away from the application server, we could set up a server nearby the clients to host ZK's JavaScript and CSS files, and then configure the application server to generate the URLs of JavaScript and CSS (and iamges it refers) from the the sever nearby the clients.
*Notice : the ZK static resource server is a simple server which deploy official ZK library, not your whole application.
How to
- Implement the Encodes.URLEncoder
- Add library-property configuration to the zk.xml
- Host ZK static resouce server
Following is a sample :
Configuration
<library-property>
<name>org.zkoss.web.servlet.http.URLEncoder</name>
<value>org.zkoss.test.TestEncoder</value> <!-- Where the Implementation Class is -->
</library-property>
Implementation
package org.zkoss.test;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.zkoss.web.servlet.http.Encodes.URLEncoder;
public class TestEncoder implements URLEncoder {
@Override
public String encodeURL(ServletContext ctx, ServletRequest request, ServletResponse response,
String uri, URLEncoder defaultEncoder) throws Exception {
if (isStaticResource(uri)) {
return getResourceHost() + uri.replace("~./", "");
} else {
return defaultEncoder.encodeURL(ctx, request, response, uri, defaultEncoder);
}
}
/**
* file .wcs : CSS File
* file .wpd : Javscript File
*/
private boolean isStaticResource(String url) {
// zul.lang.wpd should not be a static resource
return url.startsWith("~./") && !url.endsWith("zul.lang.wpd") && (url.endsWith(".wpd") || url.endsWith(".wcs"));
}
/**
* Detect where the ip is/ who is login / what kind of resouce server will
*
* @return the host name include protocol prefix. (Client will retrieve resource from it)
*/
private String getResourceHost() {
return "http://SomeWhereNearbyMe/DefaultContext/zkau/web/";
}
}
Hosting ZK Static Resource
Simply deploy ZK Library to a server (near your customer) and add the URL to your implementation of URLEncoder.
Don't know how to deploy on server ? Please refer to Installation Guide.
Version History
Version | Date | Content |
---|---|---|