ppoffice / hexo-theme-icarus

A simple, delicate, and modern theme for the static site generator Hexo.
https://ppoffice.github.io/hexo-theme-icarus/
MIT License
6.39k stars 1.55k forks source link

hexo server 预览时改动 Markdown 后,刷新浏览器获取到的 HTML 内容不变 #593

Closed songouyang closed 4 years ago

songouyang commented 4 years ago

Please make sure you took care of the following things before you submit this issue. Thank you!

默认主题不会出现此问题,用 icarus 主题就会有此问题。

主题版本:7b88a415d7deef50d2e02b510378d0ff332cdd6a

改成此版本 f5185d52d0723b3391e656f6b02a2b3e768d0fc9 即可获取到最新的 HTML 内容。猜测应该是这个 commit https://github.com/ppoffice/hexo-theme-icarus/commit/bdaab0f8fdd1794a8b41ec3f796755f6bb62d349 导致的。 把 LRU 的 size 改成 1 也可以使得 HTML 内容随着 Markdown 的变化而变化

package.json ```javascript { "name": "hexo-site", "version": "0.0.0", "private": true, "scripts": { "build": "hexo generate", "clean": "hexo clean", "deploy": "hexo deploy", "server": "hexo server" }, "hexo": { "version": "4.2.0" }, "dependencies": { "cheerio": "^1.0.0-rc.3", "hexo": "^4.0.0", "hexo-generator-archive": "^1.0.0", "hexo-generator-category": "^1.0.0", "hexo-generator-index": "^1.0.0", "hexo-generator-tag": "^1.0.0", "hexo-renderer-ejs": "^1.0.0", "hexo-renderer-marked": "^2.0.0", "hexo-renderer-stylus": "^1.1.0", "hexo-server": "^1.0.0" } } ```
_config.yml ```yaml # Version of the Icarus theme that is currently used version: 2.6.0 # Path or URL to the website's icon favicon: /images/favicon.svg # Additional HTML meta tags in an array. meta: # canonical_url of your site canonical_url: # Path or URL to RSS atom.xml rss: # Path or URL to the website's logo to be shown on the left of the navigation bar or footer logo: /images/logo.svg # Open Graph metadata # https://hexo.io/docs/helpers.html#open-graph open_graph: # Facebook App ID fb_app_id: # Facebook Admin ID fb_admins: # Twitter ID twitter_id: # Twitter site twitter_site: # Google+ profile link google_plus: # Navigation bar link settings navbar: # Navigation bar menu links menu: Home: / Archives: /archives Categories: /categories Tags: /tags About: /about # Navigation bar links to be shown on the right links: Download on GitHub: icon: fab fa-github url: 'https://github.com/ppoffice/hexo-theme-icarus' # Footer section link settings footer: # Links to be shown on the right of the footer section links: Creative Commons: icon: fab fa-creative-commons url: 'https://creativecommons.org/' Attribution 4.0 International: icon: fab fa-creative-commons-by url: 'https://creativecommons.org/licenses/by/4.0/' Download on GitHub: icon: fab fa-github url: 'https://github.com/ppoffice/hexo-theme-icarus' # Article display settings article: # Code highlight settings highlight: # Code highlight themes # https://github.com/highlightjs/highlight.js/tree/master/src/styles theme: atom-one-light # Show code copying button clipboard: true # Default folding status of the code blocks. Can be "", "folded", "unfolded" fold: unfolded # Whether to show article thumbnail images thumbnail: true # Whether to show estimate article reading time readtime: true # Search plugin settings # https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search search: # Name of the search plugin type: insight # Comment plugin settings # https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment comment: # Name of the comment plugin type: # Donation entries # https://ppoffice.github.io/hexo-theme-icarus/categories/Donation/ donate: - # Donation entry name type: alipay # Qrcode image URL qrcode: '' - # Donation entry name type: wechat # Qrcode image URL qrcode: '' - # Donation entry name type: paypal # Paypal business ID or email address business: '' # Currency code currency_code: USD - # Donation entry name type: patreon # URL to the Patreon page url: '' # Share plugin settings # https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share share: # Share plugin name type: # Sidebar settings. # Please be noted that a sidebar is only visible when it has at least one widget sidebar: # left sidebar settings left: # Whether the left sidebar is sticky when page scrolls # https://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/make-a-sidebar-sticky-when-page-scrolls/ sticky: false # right sidebar settings right: # Whether the right sidebar is sticky when page scrolls # https://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/make-a-sidebar-sticky-when-page-scrolls/ sticky: false # Sidebar widget settings # https://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/ widgets: - # Widget name type: profile # Where should the widget be placed, left or right position: left # Author name to be shown in the profile widget author: Your name # Title of the author to be shown in the profile widget author_title: Your title # Author's current location to be shown in the profile widget location: Your location # Path or URL to the avatar to be shown in the profile widget avatar: # Email address for the Gravatar to be shown in the profile widget gravatar: # Whether to show avatar image rounded or square avatar_rounded: false # Path or URL for the follow button follow_link: 'https://github.com/ppoffice' # Links to be shown on the bottom of the profile widget social_links: Github: icon: fab fa-github url: 'https://github.com/ppoffice' Facebook: icon: fab fa-facebook url: 'https://facebook.com' Twitter: icon: fab fa-twitter url: 'https://twitter.com' Dribbble: icon: fab fa-dribbble url: 'https://dribbble.com' RSS: icon: fas fa-rss url: / - # Widget name type: toc # Where should the widget be placed, left or right position: left - # Widget name type: links # Where should the widget be placed, left or right position: left # Links to be shown in the links widget links: Hexo: 'https://hexo.io' PPOffice: 'https://github.com/ppoffice' - # Widget name type: category # Where should the widget be placed, left or right position: left - # Widget name type: tagcloud # Where should the widget be placed, left or right position: left - # Widget name type: recent_posts # Where should the widget be placed, left or right position: right - # Widget name type: archive # Where should the widget be placed, left or right position: right - # Widget name type: tag # Where should the widget be placed, left or right position: right # Other plugin settings plugins: # Enable page animations animejs: true # Enable the lightGallery and Justified Gallery plugins # https://ppoffice.github.io/hexo-theme-icarus/Plugins/General/gallery-plugin/ gallery: true # Enable the Outdated Browser plugin # http://outdatedbrowser.com/ outdated-browser: true # Enable the MathJax plugin # https://ppoffice.github.io/hexo-theme-icarus/Plugins/General/mathjax-plugin/ mathjax: true # Show the back to top button on mobile devices back-to-top: true # Google Analytics plugin settings # https://ppoffice.github.io/hexo-theme-icarus/Plugins/General/site-analytics-plugin/#Google-Analytics google-analytics: # Google Analytics tracking id tracking_id: # Baidu Analytics plugin settings # https://ppoffice.github.io/hexo-theme-icarus/Plugins/General/site-analytics-plugin/#Baidu-Analytics baidu-analytics: # Baidu Analytics tracking id tracking_id: # Hotjar user feedback plugin # https://ppoffice.github.io/hexo-theme-icarus/Plugins/General/site-analytics-plugin/#Hotjar hotjar: # Hotjar site id site_id: # Show a loading progress bar at top of the page progressbar: true # BuSuanZi site/page view counter # https://busuanzi.ibruce.info busuanzi: false # CDN provider settings # https://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/speed-up-your-site-with-custom-cdn/ providers: # Name or URL of the JavaScript and/or stylesheet CDN provider cdn: jsdelivr # Name or URL of the webfont CDN provider fontcdn: google # Name or URL of the webfont Icon CDN provider iconcdn: fontawesome ```
ppoffice commented 4 years ago

@songouyang 缓存的HTML不会在修改源文件之后自动更新。这个在Hexo的代码中也有说明。所以这个问题是为了提升性能的一个牺牲。目前没有修复的计划。

serkodev commented 4 years ago

@ppoffice @songouyang

我想了一個方法,就是在 hexo 的 filter.before_generate 中清除 __fragmentCache,當在 server 執行時,便可以在每次更改文件後重置一次 cache,應該不會太影響性能,請作為參考。

includes/helpers/override.js 中加入:

hexo.extend.filter.register('before_generate', function(){
    __fragmentCache.clear()
});