Commit cf494e8e authored by Liang Ding's avatar Liang Ding

🎨 优化静态缓存

parent 06645be1
......@@ -29,13 +29,14 @@ import org.b3log.solo.service.InitService;
import org.b3log.solo.service.OptionQueryService;
import org.b3log.solo.service.PermalinkQueryService;
import org.b3log.solo.util.Solos;
import org.b3log.solo.util.Statics;
import org.json.JSONObject;
/**
* Article permalink handler.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.4, Jan 12, 2020
* @version 1.0.0.5, May 23, 2020
* @since 3.2.0
*/
public class PermalinkHandler implements Handler {
......@@ -71,6 +72,15 @@ public class PermalinkHandler implements Handler {
return;
}
// 尝试走静态化缓存
final String html = Statics.get(context);
if (StringUtils.isNotBlank(html)) {
context.getResponse().setContentType("text/html; charset=utf-8");
context.sendString(html);
context.abort();
return;
}
final ArticleRepository articleRepository = beanManager.getReference(ArticleRepository.class);
article = articleRepository.getByPermalink(permalink);
if (null == article) {
......
......@@ -11,16 +11,20 @@
*/
package org.b3log.solo.util;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.b3log.latke.Keys;
import org.b3log.latke.http.RequestContext;
import org.b3log.latke.util.Requests;
import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Article;
import org.b3log.solo.processor.SkinRenderer;
import org.json.JSONObject;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
......@@ -39,7 +43,7 @@ import java.util.zip.GZIPOutputStream;
* Static utilities. 页面静态化 https://github.com/88250/solo/issues/107
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.1.0, May 19, 2020
* @version 1.0.1.1, May 23, 2020
* @since 4.1.0
*/
public final class Statics {
......@@ -204,18 +208,26 @@ public final class Statics {
return null;
}
String ret;
String requestURL = context.requestURI();
String ret, requestURL;
// 判断文章自定义链接
final JSONObject article = (JSONObject) context.attr(Article.ARTICLE);
if (null != article) {
requestURL = article.optString(Article.ARTICLE_PERMALINK);
} else {
requestURL = context.requestURI();
}
String requestQueryStr = context.requestQueryStr();
if (StringUtils.isNotBlank(requestQueryStr)) {
requestURL += "?" + requestQueryStr;
}
ret = StringUtils.replace(requestURL, "/", "_");
ret = StringUtils.replace(ret, "?", "_");
if (Solos.isMobile(context.getRequest())) {
ret = "m" + ret;
}
ret = DigestUtils.md5Hex(ret);
return ret;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment