1-4
Nuxt server:Vuetify 斷點和 swiper 調整 GA:照著小工具指示做優化(放header、別包在外部JS檔內等等) SEO:
- 搜尋後發現google能爬到 js 產生的資料,故官網回到原本方式(不起server),繼續做meta data、sitemap
- 跨國語言網站SEO是以網域做區分(com.tw),鴻海是用同一個網站以不同語言網址掛domain方式實作,我們原本是只有.com,所以搜尋結果一直都是英文顯示而已
- 原本以為 S3 掛另外兩個domain就行,但它這樣網址以tw做根目錄的話,會抓不到存放在真正根目錄的檔案,而且本身route URL 也會錯亂,所以解法是用 S3 的複製功能,上版時同步另外兩個 bucket ,用3個 bucket 掛不同 domain 下去做語言 SEO優化
動態 head meta 設定,default layout 設定 jsonld Organization,動態文章 page 設定 jsonld NewsArticle(這頁面會有兩組 json-ld),測試上估狗結構化資料工具都抓得到 JS 產生的資料,複合式搜尋結果測試工具官方未完工(測試文章功能未有,標誌功能測試OK), open graph 因 FB 無法抓動態產生的資料所以沒做,只有設預設。
- S3 Replication 只能指向一個目標 bucket,但能有多條 rule
- Replication 功能須雙方 bucket 都開啟 version (刪除 bucket 時需連版本紀錄都刪除)
- 源 bucket 設定完後需在目標 bucket 的 action 內設定 Receive objects
cloudformation 寫 template 只是自動化建立所有需要的服務和設定,關於 S3 上傳檔案等等的操作還是需寫指令。 因 cloudfront 的設置指向 S3 資源,所以 S3 本身就不需要再設置 bucketpolicy 和 開啟 website 設定,因為 S3 不會直接對到 enduser。
- nuxt sitemap 設定,能設多個子 .xml、用axios產動態路徑、hostname、lastmod等等基本設置:https://www.npmjs.com/package/@nuxtjs/sitemap#usage
- 和 client 同層可建 hooks 資料夾,裡面 deploy.js 可自訂額外的指令流程。
- nuxt i18n 可設置 domain 指向對應語言,原本 spa 模式 build 出來會有 tw 等等資料夾,設置後就沒了。
aws S3 cli
- 文檔:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters
- 範例:
aws2`` s3 sync /Users/zhuangbocheng/Desktop/AWS/xxx.com/dists s3://test-xxx --exclude "*" --include ".png" --include ".xml" —include "anest/"
- sync 指令會判斷檔案是否有變更,沒變更就不會更新。
- 條件判斷是越後面權重越大,先
exclude
所有檔案再include
要需要的 - s3 和 s3api 指令差別在,s3 比較簡化和專注在核心操作,s3api 較複雜可以做所有關於 s3 bucket 的設定
Sam cli
- Serverless Application Model (SAM) 為 cloundformation 的擴展,用於建構無伺服應用程序框架,集成很多東西
- 因為目前只有對比過
aws2 create stack
、sam deploy
,使用感覺差別不大,但 lambda 那邊 sam 做掉很多程序,很方便 - cloudformation template 一定都要 package 再 deploy 上去,佈建前要先建個 S3 bucket 放轉譯後的 template
- 上傳至 aws ecr:docker tag 的資源名稱要跟 ecr repositories 名稱一樣
- push 到 ecr 前要先 aws ecr get-login-password
- ECS taskDefine 也可以除了從 ECR 抓映像檔,也可以從 dockerhub 抓
- ECS service 起多少個, ApplicationAutoScaling::ScalableTarget、ScalingPolicy 就要設多少個
Redis:是一個 in-memory 的 key-value database,因此常常被用在需要快取(Cache)一些資料的場合,可以減輕許多後端資料庫的壓力。https://blog.techbridge.cc/2016/06/18/redis-introduction/
- Docker 上運行 redis:https://marcus116.blogspot.com/2019/02/how-to-run-redis-in-docker.html
- 待學習完的存cache到redis,加快下次call api 的速度:https://itnext.io/learn-to-cache-your-nodejs-application-with-redis-in-6-minutes-745a574a9739
- 因兩個 container 互相連接需用複雜的 docker cli 來寫,故用 docker compose 來輕鬆建立多個容器的連接:http://progressivecoder.com/docker-compose-nodejs-application-with-redis-integration/
- Redis 是用 TCP 傳輸協定
- 在 ELB 中 TCP 傳輸是用 NLB (不是ALB)
- NLB 不能設 SG,不用偵聽規則、其他相關配置都跟 ALB 不一樣。(要看官方文件- -)
IAM role 教學會
- service role 需要設 relation ship,定義此 role 只能給指定的服務做使用
- relation ship 也能指定給特定 user ,授權他可以操作
safari 中 css heigtht 計算顯示有不同,導致按鈕元件的 svg 在 safari 無法根據外框做自適應,不太清楚規則,但用外層包 flex 就能讓內部元素根據外面做 scalling
- ECS 起的服務,其 SG VPC 都是依賴於 ec2 instance 上配置的,(這樣不太符合 ECS 本身的特色),故有提供 taskdefine 可選 awsvpc 連網模式,再在 service 配置 NetworkConfiguration,即可將 service 抽出並配置 SG、VPC 更能彈性連線
- AutoScalingGroup 設的 VPCZoneIdentifier 如果指定的 subnet 沒有
MapPublicIpOnLaunch=true
,啟動實例會失敗(收不到訊號)
- 操作陣列方法複習:https://hsiangfeng.github.io/javascript/20190421/1216566123/
- Javascript 進階觀念好文:https://blog.huli.tw/2020/04/18/javascript-function-is-awesome/?fbclid=IwAR1HYlL8-o_87BIE_ivXaWBuQvSp70xg9DfiqvebQL6PxFgguUabYaqWKO8
- ECS 啟用的實例 type 為 Fargate 才能使服務在 awsvpc 模式啟用 Assign public IP
- 接上段:啟用實例為 EC2 的話官方建議使用 NAT gateway 使其服務能聯網
- 使用 awsvpc 的服務掛載 ELB 時需指定
TargetType:ip
,若是 Lambda 要掛載則指定TargetType:lambda
- ECS 佈建時 service 掛 ELB 需
DependsOn:ELBListener
, DependsOn 是保證建立先後順序
- Internet Gateway 除了要貼在 vpc 之外,public route 也要掛
- NAT Gateway 要設在 public subnet 上,並給他貼個 EIP,並在 private route 掛上
- 若 private subnet 的 service 需聯網,不用 NAT Gateway 的情況下只能貼 EIP 給他(若只連 AWS 服務則可用 VPC endpoint
- ACL 用於限制流量大小
- fargate 如果不 assign public IP 則需要 NAT gateway 才能進行需要聯網的動作(ECR 下載 image,或用 ECR VPC endpoint
- SG 若指定來源另個 SG,來源必定要前一個,前前個不收
- 若服務有掛 loadbanlce,服務若用 awsvpc mode 有設 SG 的話要允許 loadbanlce 來的,不然 loadbanlce healthy check 會連不到而一直重複起服務
- ECS service discovery 除了 network:none 之外的模式都可用,host、bridge 模式只有類型 SRV 紀錄受會到支援。選擇容器名稱和連接埠組合以與該紀錄建立關聯,awsvpc 模式可選取 A 或 SRV 紀錄類型
- ECS 的服務建議都是無狀態 (stateless),有狀態的放 RDS
JS 30: Day 2 - CSS + JS Clock
- 若
setTimeout
要重複呼叫,在其回呼函式內再 setTimeout 一次 requestAnimationFrame
是以畫面更新頻率來重複呼叫,當頁面不可見時不會呼叫以節省效能,使用上和 setTimeout 類似,若要重複呼叫需在回呼函式內再 requestAnimationFrame 一次- 額外:
document.visibilityState
會回傳目前網頁的可見狀態(visible, hidden, prerender),可用此判斷網頁是否在背景或隱藏縮小 visibilitychange
事件為網頁可見狀態改變時會呼叫,搭配判斷visibilityState
可做很多功能
用 Js 操控 CSS 偽元素屬性:https://www.oxxostudio.tw/articles/201706/pseudo-element-3.html