网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網(wǎng)

微信小程序簡易SEO優(yōu)化

發(fā)布時間:2020-05-21 09:51 所屬欄目:小程序開發(fā)教程

半個月前給客戶做了一個老小程序的 SEO 的初步優(yōu)化計劃,合計費時約 2 天左右,個中細(xì)節(jié)比較多, 這里舉例兩個比較重要,但是又不算難改的優(yōu)化點。

前端優(yōu)化:跳轉(zhuǎn)的 URL 可以直接打開

簡單可以測試為,分享出去的卡片,均可以直接打開(請務(wù)必測試是否登錄,神坑)。

這里牽扯到兩個問題。

  • 頁面渲染邏輯
  • query 所攜帶的參數(shù)
  • 組件內(nèi) URL 問題

第一個問題會牽扯到后端接口下發(fā)的內(nèi)容,比如這樣的場景:

后端下發(fā)了一個列表數(shù)據(jù),種種原因?qū)е铝斜碇芯桶它c擊列表后詳情所要展示的所有內(nèi)容,然后分享出去的是詳情。這種情況基本是一個分享一個炸,自然微信小程序的頁面爬蟲也是個個 GG。這種情況就得前后端一起優(yōu)化,獨立一個 /x/detail 的接口,通過 id 等方式可獲取詳情的詳情數(shù)據(jù),并且注意,分享頁務(wù)必接口設(shè)定無需登錄。

然后就是這個 id 之類的東西如何帶進去,這就是第二個問題。

有時候可能會因為一些特殊原因在 localStorage 或干脆直接掛在 getApp() 實例內(nèi)存上,臨時儲存上個頁面的 key,然后下個頁面出來后在 onLoad 中拿這個 key 去使用。如果你有這個操作或者歷史遺留問題,務(wù)必將其放在下個頁面的 path 上,掛載在 query 后面。原因就是爬蟲不會從上頁面給你帶內(nèi)存數(shù)據(jù),更不會驗證本地緩存是否有效。

第三個問題也很常見,因為小程序 SEO 中有一條是能用 navigator 則用 navigator, 而很有可能 nav 的功能被你封裝在了一個組件內(nèi),常見比如 card 類組件,其本身就是一個 view(記得換成 navigator)下包含了其他元素。而點擊操作之前可能是 bindtap 后根據(jù)組件攜帶的 item 計算出來的 path,而 item 是父級頁面獲取的接口 list 元素。如果出現(xiàn)這種情況,那么首先把組件的根 view 換成navigator,刪除 bindtap 與相應(yīng)事件,給 navigator 的 url 屬性寫上 item.url(或類似),然后在父級頁面獲取 list 的地方,多一個步驟,把 list 給 map 一下,或者 forEach 一下,給 list 的元素分別加上 url,這個 url 的計算在這里直接進行即可。

服務(wù)端優(yōu)化:使用頁面路徑推送能力

這個就跟搜索引擎的站長提交鏈接地址一樣,只不過這里提交的是小程序頁面 path 與 query。多的不說,直接 NodeJS 代碼參考下即可。

function pushWeixinPages() {
  // 默認(rèn)起始 ID
  let id = 0
  // 這里放個本地文件保存上次推送的頁面 ID,建議 ID 為數(shù)據(jù)庫自增索引
  // 本地保存是為了服務(wù)器重啟不至于又來一遍
  fs.readFile('./menu\_id', async (error, menu\_id) => {
    console.log(error)
    if(error) {
      // 如果本地沒有記錄文件,則新建一個從零開始
      fs.writeFileSync('./menu\_id', '0')
    } else {
      id = menu\_id.toString()
      // 某頁面數(shù)據(jù)庫儲存的數(shù)據(jù)
      let push\_sql = \`
        SELECT \[selector\] FROM \[from\] where \[where\] order by id;
      \`
      // console.log(push\_sql)
      // 執(zhí)行數(shù)據(jù)庫語法,請自行封裝
      let ret = await util.sqlHandle(push\_sql)
      // 推送的頁面數(shù)組
      let pages = \[\]
      ret.forEach(({ id }, idx) => {
        // 添加每一項進數(shù)組
        pages.push({
          path: '/pages/detail/index',
          query: \`id=${id}\`
        })
        // 最后一項的時候,本地存一下進度 ID
        if(idx === ret.length - 1) {
          fs.writeFileSync('./menu\_id', menu.id)
        }
      })
      // 獲取微信 access\_token,請自行封裝
      let { data } = await local.get('/wx/access\_token')
      // 推給微信
      await axios.post(\`https://api.weixin.qq.com/wxa/search/wxaapi\_submitpages?access\_token=${data.access\_token}\`, {
        pages,
      })
      // 其他,愿意的話可以做做安全判斷
    }
  })
}

其他語言參考處理即可,具體業(yè)務(wù)具體邏輯。

其他優(yōu)化方面

順便提一下,以下幾方面:

  1. onShareAppMessage 時候配置 title 與 image
  2. sitemap
  3. web-view 不收錄

完事。

 


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/25247.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×