Commit cf494e8e authored by Liang Ding's avatar Liang Ding

🎨 优化静态缓存

parent 06645be1
...@@ -29,13 +29,14 @@ import org.b3log.solo.service.InitService; ...@@ -29,13 +29,14 @@ import org.b3log.solo.service.InitService;
import org.b3log.solo.service.OptionQueryService; import org.b3log.solo.service.OptionQueryService;
import org.b3log.solo.service.PermalinkQueryService; import org.b3log.solo.service.PermalinkQueryService;
import org.b3log.solo.util.Solos; import org.b3log.solo.util.Solos;
import org.b3log.solo.util.Statics;
import org.json.JSONObject; import org.json.JSONObject;
/** /**
* Article permalink handler. * Article permalink handler.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @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 * @since 3.2.0
*/ */
public class PermalinkHandler implements Handler { public class PermalinkHandler implements Handler {
...@@ -71,6 +72,15 @@ public class PermalinkHandler implements Handler { ...@@ -71,6 +72,15 @@ public class PermalinkHandler implements Handler {
return; 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); final ArticleRepository articleRepository = beanManager.getReference(ArticleRepository.class);
article = articleRepository.getByPermalink(permalink); article = articleRepository.getByPermalink(permalink);
if (null == article) { if (null == article) {
......
...@@ -11,16 +11,20 @@ ...@@ -11,16 +11,20 @@
*/ */
package org.b3log.solo.util; package org.b3log.solo.util;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.b3log.latke.Keys;
import org.b3log.latke.http.RequestContext; import org.b3log.latke.http.RequestContext;
import org.b3log.latke.util.Requests; import org.b3log.latke.util.Requests;
import org.b3log.latke.util.Strings; import org.b3log.latke.util.Strings;
import org.b3log.solo.model.Article;
import org.b3log.solo.processor.SkinRenderer; import org.b3log.solo.processor.SkinRenderer;
import org.json.JSONObject;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
...@@ -39,7 +43,7 @@ import java.util.zip.GZIPOutputStream; ...@@ -39,7 +43,7 @@ import java.util.zip.GZIPOutputStream;
* Static utilities. 页面静态化 https://github.com/88250/solo/issues/107 * Static utilities. 页面静态化 https://github.com/88250/solo/issues/107
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @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 * @since 4.1.0
*/ */
public final class Statics { public final class Statics {
...@@ -204,18 +208,26 @@ public final class Statics { ...@@ -204,18 +208,26 @@ public final class Statics {
return null; return null;
} }
String ret; String ret, requestURL;
String requestURL = context.requestURI();
// 判断文章自定义链接
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(); String requestQueryStr = context.requestQueryStr();
if (StringUtils.isNotBlank(requestQueryStr)) { if (StringUtils.isNotBlank(requestQueryStr)) {
requestURL += "?" + requestQueryStr; requestURL += "?" + requestQueryStr;
} }
ret = StringUtils.replace(requestURL, "/", "_"); ret = StringUtils.replace(requestURL, "/", "_");
ret = StringUtils.replace(ret, "?", "_"); ret = StringUtils.replace(ret, "?", "_");
if (Solos.isMobile(context.getRequest())) { if (Solos.isMobile(context.getRequest())) {
ret = "m" + ret; ret = "m" + ret;
} }
ret = DigestUtils.md5Hex(ret);
return 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