1.问题及起因

过去我储存博客帖子的方式是四层文件夹:content、posts、year、month。month是月份,具体的每一个单独帖子就直接放在里面。例如10月23日的帖子是“content-and-format.md”,就直接放在content→posts→2023→10中。我是直接在Rstudio中点击AddinsNew Post来创建新帖子的,但是我现在的帖子管理方式会随着帖子的增多而带来不便。

如上图所示,会出现大量的“posts/xxx/xxx”。所以我打算将新的md文件直接放在posts文件夹下。作为试验,我今晚将最新的帖子“2023-10-23-content-and-format”放在了文件夹posts下,并成功建站。但就在我点击进入浏览器的本地预览时,原有的CSS样式却无法正常显示。

可是在Rstudio的显示里面却是正常的。

此外,刚开始推送“2023-10-23-content-and-format.md”到GitHub,Netlify可以成功部署,我在网络上访问时网站样式正常且帖子也成功显示,网址与过去一样显示“posts/2023/10/xxx”。

2.问题缘由与解决办法

我在论坛里试着搜索了一下相关的问题缘由和解决方法。

2.1问题缘由

看下来,我感觉有两个可能。第一个是湘云之前遇到过的站点切换导致 RStudio Viewer 残留上个网站样式;第二个是tctcab讲到的与public文件相关。

此外,我将blogdown:::serve_site()之后工作台显示的http://localhost:4321复制并分别粘贴到了edge、火狐和谷歌浏览器。edge无法正常显示博客原有样式,但后两者都可以。奇怪的是,当我将edge调整到Internet Explorer模式时,却又可以正常显示。

2.2尝试的解决方法

按照这篇帖子里益辉说的运行blogdown::hugo_build()以检查是否有什么错误信息,我在Rstudio中运行了blogdown::hugo_build(),返回结果如下:

Start building sites … 
hugo v0.111.3-5d4eb5154e1fed125ca8e9b5a0315c4180dab192+extended windows/amd64 BuildDate=2023-03-12T11:40:50Z VendorInfo=gohugoio

                   | ZH   
-------------------+------
  Pages            | 114  
  Paginator pages  |  10  
  Non-page files   |   3  
  Static files     | 217  
  Processed images |   0  
  Aliases          |   2  
  Sitemaps         |   1  
  Cleaned          |   0  

Total in 2402 ms

之后,Rstudio内Git的界面里显示生成了大量的public文件夹内的文件(之前是没有的),如下:

但我不知道是否要将这些文件推送到github并被Netlify部署。

3.基本信息

刚开始我以为是我贸然修改文件存储路径才导致预览不正常,所以我将最新的帖子修改回原来的content→posts→2023→10的存储方式了。

我的源代码仓库地址:https://github.com/residualsun1/Residualsun

已更新现有R包。更新时显示htmltools包有故障,我删除并重新下载了。

我的运行环境如下:

> sessionInfo()
R version 4.2.3 (2023-03-15 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)

Matrix products: default

locale:
[1] LC_COLLATE=Chinese (Simplified)_China.utf8 
[2] LC_CTYPE=Chinese (Simplified)_China.utf8   
[3] LC_MONETARY=Chinese (Simplified)_China.utf8
[4] LC_NUMERIC=C                               
[5] LC_TIME=Chinese (Simplified)_China.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] shiny_1.7.5.1

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.11       rstudioapi_0.15.0 knitr_1.44        servr_0.27       
 [5] magrittr_2.0.3    xtable_1.8-4      R6_2.5.1          rlang_1.1.1      
 [9] fastmap_1.1.1     tools_4.2.3       xfun_0.40         miniUI_0.1.1.1   
[13] cli_3.6.1         jquerylib_0.1.4   ellipsis_0.3.2    htmltools_0.5.6.1
[17] yaml_2.3.7        digest_0.6.33     lifecycle_1.0.3   bookdown_0.36    
[21] processx_3.8.2    later_1.3.1       sass_0.4.7        promises_1.2.1   
[25] ps_1.7.5          rsconnect_1.1.1   memoise_2.0.1     cachem_1.0.8     
[29] evaluate_0.22     mime_0.12         rmarkdown_2.25    blogdown_1.18    
[33] bslib_0.5.1       compiler_4.2.3    jsonlite_1.8.7    httpuv_1.6.11 

请问我应该将生成的public文件推送到github上吗?应当如何解决本地edge浏览器的预览故障?

    CyrusYip 叶寻,感谢回复!

    我按照你说的第一方法,新设了一个edge的profile,然后再粘贴http://localhost:4321/,出现的界面是正常的。

    但是我原来的个人profile下的edge预览就有问题。

    https://github.com/residualsun1/Residualsun/tree/d9580c8a319e97e4eea79b253b72b6ad8a3bd328 是这个 commit 出问题的吗?

    我点进去跳转到的是我的仓库界面。我感觉可能不是文件的问题,但不确定,不过按照你的方法来做,感觉更像是浏览器的问题。我有几天没有在这个仓库上传文件了,刚好改了一个文件存储路径,我就很容易归因在文件上传上。然后我这两天一直在折腾Quarto的博客,Quarto的qmd文件有个特点就是要render得很频繁,每render一次就更新一次html,然后我再点开预览——同样是在我的edge,所以在edge浏览器就预览得很频繁。

    附上我render并预览得很频繁的Quarto的代码仓库:https://github.com/residualsun1/Guozheng

    综上的话,我想是不是要清理掉原来的个人profile的cookie那些数据?或者是消除Quarto文件渲染的影响(如果有的话)?

    CyrusYip 问题解决啦(不过我似乎小题大做了)!谢谢你,叶寻!

    循着你的思路(尝试新设profile下是否可以正常预览),我去问了科大讯飞星火认知大模型(之前用外国号码注册过chatgpt,但不知道为什么现在用不了)

    下面贴出互动过程:

    我:我用blogdown搭建的博客,今天上传帖子的时候,在edge本地预览发现无法正常显示css样式,但是部署到github进入网址查看却是正常的。此外,我在edge新设立的profile中再查看预览css可以正常显示,但旧profile下却不行,这是怎么回事?

    讯飞模型:您好,根据您的描述,这个问题可能是由于以下原因导致的:

    1. 缓存问题:浏览器为了提高加载速度,会将一些静态资源如CSS、JS等存储在本地。当您直接在本地预览时,如果浏览器缓存了旧的CSS文件,那么可能会导致新的CSS样式不生效。您可以尝试清除浏览器缓存或使用隐私模式进行预览。

    2. 文件路径问题:有时因为样式文件路径设置错误或静态资源被拦截,可能导致样式文件没有加载到。您可以按F12查看样式文件是否有加载到,如果没有加载到,例如样式文件请求返回404,则需要修改样式文件路径。

    3. 浏览器兼容性问题:不同的浏览器对CSS的解析可能有所不同,这可能会导致在某些浏览器上显示不正常。您提到在Edge的不同profile下有不同表现,这也可能与浏览器的缓存或设置有关。

    4. 网络问题:如IIS空间不足、浏览者网速慢等网络因素也可能导致CSS加载失败。

    为了解决这个问题,您可以尝试以下方法:

    1. 清除浏览器缓存或使用隐私模式进行预览。
    2. 检查并确保CSS文件的路径正确无误。
    3. 尝试在其他浏览器上预览,看是否也有同样的问题。
    4. 如果使用的是第三方主题,检查主题的文档或GitHub issue,看是否有其他用户遇到了类似的问题。

    我:在火狐和谷歌浏览器上都可以正常预览

    讯飞模型:既然在火狐和谷歌浏览器上都可以正常预览,那么这个问题可能与您的Edge浏览器或者其profile设置有关。以下是一些可能的原因:

    1. 浏览器缓存或设置问题:考虑到您提到在新设立的profile中可以正常显示,而在旧的profile下无法正常显示,这可能与浏览器的缓存或特定的设置有关。您可以尝试清除Edge的缓存或者尝试使用隐私模式进行预览。

    2. 兼容性问题:虽然您提到的网站在多个浏览器上都能正常显示,但不同浏览器对CSS的解析可能存在差异。考虑到您在Edge的不同profiles下观察到不同的表现,这也可能涉及到浏览器的兼容性问题。为了确保网站在不同浏览器上的一致性,可能需要针对不同的浏览器应用不同的CSS样式。

    3. 其他潜在问题:例如外部样式引入错误、选择器问题、编码格式问题或样式层叠问题等也可能导致CSS无法正常显示。您可以检查这些方面,确保没有潜在的错误。

    到这个时候我基本认定是浏览器的存储问题,按照模型给的建议:

    要清理Edge浏览器的缓存,您可以按照以下步骤操作:

    1. 首先,双击Edge图标以打开浏览器。
    2. 然后,找到并单击浏览器右上角的“更多操作”选项。
    3. 在下拉菜单中选择“设置”。
    4. 在设置页面中,寻找并点击“选择要清除的内容”选项。
    5. 在这个列表中,找到并勾选“缓存的数据和文件”。
    6. 最后,单击下方的“清除”按钮,等待清理过程完成。

    当我再预览的时候,界面恢复了正常。总结,此次问题的症结应该是在于长时间且频繁使用浏览器预览后产生的数据与缓存影响了正常的网页预览。另,chatgpt及讯飞模型(目前我只能用这个)是很强大的工具,下次不会那么贸然地就发问啦(不过如果叶寻不说profile的问题我可能也不知道下一步该怎么办)。

    赞这个提问排版。

    然而问题本质就是存在已久的浏览器缓存机制 排版那点时间先问问gpt就可以解决。 下次碰到问题还是先易后难最后再来问问题比较节省时间吧 😉

      tctcab

      赞这个提问排版。

      谢谢你!

      我很久没有用过语言模型了,昨晚比较迟的时候看了肖楠的《杰文斯悖论》这篇帖子,才想起来还可以找Chatgpt等语言模型帮忙。学习提问也是一门学问,因为刚遇到问题的时候很容易急,沉稳的、以高效解决问题为中心向导的心态与思维我还需要多多练习。